Attacher un event à élement creer par le DOM
Bonjour,
J'ai cette petite fonction qui permet d'attacher un event à un élement créé dynamiquement par le DOM :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
registerEvent = function(on, ev, func, capture) {
if (window.addEventListener)
on.addEventListener(ev, func, capture);
else {
if (!on.funcsCounter) on.funcsCounter = 0;
on['func'+on.funcsCounter] = func;
on.funcsCounter++;
on.attachEvent("on"+ev, function() { for(var i=0; i<on.funcsCounter; i++) on['func'+i](); });
}
} |
et on l'utilise de cette manière :
Code:
1 2 3 4 5 6 7 8
|
registerEvent(document.getElementById('myLink'), 'click', function() {
this.style.color = '#f00';
this.style.fontWeight = 'bold';
}); |
Pourquoi mon code ci-dessous pose problème ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
registerEvent = function(on, ev, func, capture) {
if (window.addEventListener)
on.addEventListener(ev, func, capture);
else {
if (!on.funcsCounter) on.funcsCounter = 0;
on['func'+on.funcsCounter] = func;
on.funcsCounter++;
on.attachEvent("on"+ev, function() { for(var i=0; i<on.funcsCounter; i++) on['func'+i](); });
}
}
fillservices = function() {
alert(this.value);
}
monInput = document.createElement("<input name='services'>");
monInput.type = "radio";
var monInputId = monInput.id = 'services'+items[i].getElementsByTagName('valeur')[0].firstChild.nodeValue;
monInput.value = items[i].getElementsByTagName('valeur')[0].firstChild.nodeValue;
document.body.appendChild(monInput);
registerEvent(document.getElementById(monInputId), 'click', fillservices); |
Merci d'avance...