Struppi: Tooltip Timeout Unterbrechen

Beitrag lesen

Für normal, beendet man einen Timeout ja folgendermaßen:

function down(){

var an = window.setTimeout('down()',1000);
window.scrollBy(0,i);
i++;
}

function stop() {
window.clearTimeout(an);

  
Das funktioniert nicht. Da 'an' nur lokal in der Funktion down bekannt ist, wird stop() einen Fehler erzeugen. Wobei du in deinem Skript die Variabel 'an' (die dort countdown heißt) zweimal deklarierst, einmal global und einmal lokal, daher auch keine Fehlermeldung.  
  
Aber was dann pasiert, kannst du an dem folgendem Beispiel sehen:  
~~~javascript
var v1 = 1;  
function test() {  
 varv1 = 0;  
}  
alert(v1);

Soweit ist mir das auch bekannt, und soweit folge ich auch noch.
Und zwar, habe ich folgendes Problem.
Ich habe mir selbst einen Tooltip zusammengebastelt, und den
Code dafür binde ich nun mittels Greasemonkey folgendermaßen in eine Seite ein:

var pos1, div1;

pos1 = document.getElementById('contentUpLeftColumn');
if (pos1) {
div1 = document.createElement('div');
div1.id = "jssource";
pos1.parentNode.insertBefore(div1, pos1);
}
var newScript = document.createElement("script");
newScript.type = "text/javascript";
newScript.src = "http://domain.tld/tooltip.js";
document.getElementById('jssource').appendChild(newScript);

  
Die id für das DIV ist hier überflüssig, du kannst auch schreiben:  
`div1.appendChild(newScript)`{:.language-javascript}  
  

> ~~~javascript

document.links[i].title = "";  

> document.links[i].setAttribute("onMouseOver", "openToolTip('"+linkuserid+"');");  
> document.links[i].setAttribute("onMouseOut", "closeToolTip('"+linkuserid+"');stop();");

Nur als Tipp.

Events über setAttribute einzubinden ist nicht unbedingt sinnvoll. Es funktioniert nicht im IE (ist in deinem Fall nicht tragisch) und es ist umständlicher.

  
document.links[i].onmouseover = function(e) {  
openToolTip( linkuserid );  
}; 

Wobei das nicht funktioniert, da dann linkuserid immer der letzte Wert in der Schleife ist. Der einfachste weg dies zu umgehen ist es dem Objekt die Eigenschaft zuzuweisen.

document.links[i]._id = linkuserid;  
document.links[i].onmouseover = function(e) {  
openToolTip( this._id);  
};  

Struppi.