Struppi: Event-Handler dynamisch generieren im MS IE

Beitrag lesen

var new_attr = document.createAttribute("id");
    new_attr.nodeValue = "sugg" + i;
    new_div.setAttributeNode(new_attr);

Das ist komplett überflüssig, ein DIV hat immer eine ID, d.h. du musst diese nicht erzeugen, sondern kannst sie direkt zuweisen:

new_div.id = "sugg" + i;

var new_attr = document.createAttribute("class");
    new_attr.nodeValue = "div_sugglist";
    new_div.setAttributeNode(new_attr);

Hier gilt das gleiche, nur das das Attribut className heißt.

var new_attr = document.createAttribute("onclick");
    new_attr.nodeValue = "window.location.href='?p=" + i + "'";
    new_div.setAttributeNode(new_attr);

Events lassen sich am einfachsten so zuweisen:

new_div.onclick = function(e) {  
window.location.href = '?p=' + i;  
}  

Allerdings scheitert hier die Zuweisung von i, da beim Aufruf der Funktion immer das letzte i genommen wird. Da du das i anscheinend immer brauchst, ist es am einfachsten dies als Attribut an das Element zu hängen.

  
new_div.i = i;  
new_div.onclick = function(e) {  
window.location.href = '?p=' + this.i;  
};  

genauso mit der onmouseover Funktion:

new_div.onmouseover = function(e) {  
sugglisthover(this.i, 'in');  
};  

usw.

Struppi.