+ Antworten
Ergebnis 1 bis 2 von 2

Thema: setInterval on mouseover und mouseout

  1. #1
    dop3 ist offline Grünschnabel dop3 befindet sich auf einem aufstrebenden Ast
    registriert
    10-03-2010
    Beiträge
    2

    setInterval on mouseover und mouseout

    Guten Morgen

    Ich versuche per Javascript einen Text im Schreibmaschinen-Effekt schreiben zu lassen, wenn ich mit der Maus über einen Button bewege.
    Und bei mouseout sollen die Buchstaben nach und nach wieder entfernt werden.

    Das habe ich bis dahin geschafft.

    Das Problem ist wenn der Text gekürzt wird (also wenn setInterval fürs Text Kürzen gerade aktiv ist.) und ich mit der Maus wieder über den Button gehe, stoppt es, und beim mouseout verschwindet der Text komplett obwohl wie beim laden der Seite "Lorem ..." mindestens als fester Text vorhanden sein soll.

    Das Javascript:
    Code:
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
    <script type="text/javascript">
      <!--
    var completeText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.";
    var duration = 1000;
    var dots = ' ...';
    var contentLength = completeText.length;
    var timePerLetter = duration / contentLength;
    var currentText = 'Lorem ...';
    var textLength = currentText.length;
    var abschneid = textLength - dots.length;
    var textLengthWithoutDots = currentText.substr(0, abschneid).length;
    var i = textLengthWithoutDots;
    
    $('#button').live('mouseover', function(){
    		aktiv = setInterval('ani()', timePerLetter);
    });
    function ani(){
    	$("#outID").text(completeText.substr(0,i) + dots);
    	if(i++ >= contentLength) clearTimeout(aktiv);
    }
    
    $('#button').live('mouseout', function(){
    	clearTimeout(aktiv);
    	aktiv = setInterval('aniBack()', timePerLetter);
    });
    function aniBack(){
    	$("#outID").text(completeText.substr(0,i) + dots);
    	if(i-- <= textLengthWithoutDots){
    		clearTimeout(aktiv);
    	};
    }
    
     //-->
    </script>
    </head>
    <body>
    	<div id="outID">Lorem ...</div>
    	<br /><br />
    	<div id="button">Button</div>
    </body>
    </html>
    Im IE funktioniert's nicht, ist aber nicht weiters schlimm.

    Habt Ihr da eine Vermutung an was das liegen könnte?
    Schreibe gerade ein jQuery-Plugin in das ich noch gerne dieses feature einbauen würde.

    Bin für jeden Tipp Dankbar

    Gruss
    dop3

  2.    Empfehlenswerte Literatur von unserem Partner Terrashop

    Das AJAX Kompendium jetzt 84% Rabatt
    Ajax - der Technologiemix aus JavaScript und XML - ist eines der Kernstücke professioneller Web 2.0-Programmierung. Dieses Buch führt Sie auf über 800 Seiten(!) von den ersten JavaScript-Codezeilen bis zur Entwicklung mit Ajax-Frameworks.

    Preis: früher: 49,95€ - jetzt nur: 7,95€

    Hier geht es direkt zum Buch

    Über 1.000 weitere IT-Bücher zum Sonderpreis lieferbar!

  3. #2
    dop3 ist offline Grünschnabel dop3 befindet sich auf einem aufstrebenden Ast
    registriert
    10-03-2010
    Beiträge
    2

    Problem gelöst

    HTML-Code:
    <script type="text/javascript">
      <!--
    var completeText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.";
    var duration = 1000;
    var dots = ' ...';
    var contentLength = completeText.length;
    var timePerLetter = duration / contentLength;
    var currentText = 'Lorem ...';
    var textLength = currentText.length;
    var abschneid = textLength - dots.length;
    var textLengthWithoutDots = currentText.substr(0, abschneid).length;
    var i = textLengthWithoutDots;
    
    var chabis = true;
    
    $('#button').live('mouseover', function(){
    	if(chabis == true){
    		aktiv = setInterval('ani()', timePerLetter);
    	} else {
    		clearTimeout(out);
    		aktiv = setInterval('ani()', timePerLetter);
    	}
    	//chabis ? aktiv = setInterval('ani()', timePerLetter) : clearTimeout(out);
    });
    function ani(){
    	$("#outID").text(completeText.substr(0,i) + dots);
    	if(i++ >= contentLength){
    		clearTimeout(aktiv);
    	}
    }
    
    $('#button').live('mouseout', function(){
    	clearTimeout(aktiv);
    	chabis = false;
    	out = setInterval('aniBack()', timePerLetter);
    });
    function aniBack(){
    	$("#outID").text(completeText.substr(0,i) + dots);
    	if(i-- <= textLengthWithoutDots){
    		clearTimeout(out);
    		chabis = true;
    	}
    }
    
     //-->
    </script>
    have a nice week..

+ Antworten

Ähnliche Themen

  1. mouseOver setTimeout problem
    Von saardaniel im Forum JavaScript
    Antworten: 0
    Letzter Beitrag: 15-10-2009, 13:14
  2. mouseover mouseout Unterelemente
    Von skiordie im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 12-07-2007, 09:57
  3. mouseOver - mouseOut
    Von Testor im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 30-09-2005, 12:25
  4. mehrere mouseover mouseout auf 1 SEite?
    Von Nuuna im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 11-05-2004, 09:16
  5. Alle jahre wieder Mouseover
    Von Mjöllnir im Forum JavaScript
    Antworten: 10
    Letzter Beitrag: 01-11-2003, 10:28

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein