Struppi: Event Problem in einer Schleife

Beitrag lesen

Hier das Script:

function changeScript(){
links = document.getElementById("secSubmenu").getElementsByTagName("a");
for(x = 0; x < links.length; x++){
  name = links[x].firstChild.getAttribute("name");
  links[x].setAttribute("onmouseover", function(){ myover(name); }, true);
}
}

Was ist firstChild?
Normalerweise ist das bei einem Link ein Textknoten, der keine Attribute hat. Falls es ein Bild ist, würde ich das auch explizit abfragen. Den Event kann man auch ohne setAttribute setzen, was auch zuverlässiger ist. Und dann hast du natürlich das Problem mit dem closure, dass dort name nach dem durchlaufen der Schleife immer den Wert des letzten Namens hat. Ausserdem würde ich nie globale Variabeln verwenden.

var links = document.getElementById("secSubmenu").getElementsByTagName("a");
for(var i = 0; i < links.length; i++)
{
links[x].onmouseover = function()
{
myover(this.firstChild.name);
// oder: myover(this.getElementsByTagName('img')[0].name);
};
}

Struppi.

--
Javascript ist toll (Perl auch!)