2009-08-21 5 views
2

J'ai du code qui crée dynamiquement un nouveau bouton via JavaScript qui, lorsqu'on clique dessus, appelle une fonction JavaScript. Le code fonctionne comme prévu dans Firefox, Chrome, Opera mais bas, et ça ne marche pas dans IE (7 - je ne vais même pas m'embêter avec IE6).IE bouton dynamiquement ajouté n'appelant pas Cliquez sur

Le bouton est créé et apparaît, mais il n'appelle pas l'événement onclick.

var newButton = document.createElement('input'); 
newButton.setAttribute('id','btnChat_'); 
newButton.setAttribute('type','button'); 
newButton.setAttribute('onclick','askQuestion()'); 
newButton.setAttribute('value', 'Respond'); 
document.getElementById('frmChat').appendChild(newButton); 

Est-ce que quelqu'un sait pourquoi cela ne fonctionnera pas dans IE, ou une suggestion quant à la façon dont je pourrais écrire ce code afin qu'il fonctionne?

Merci.

Répondre

4

Vous pouvez essayer d'éviter l'utilisation de setAttribute et juste faire

newButton.onclick = function(){ askQuestion(); }; 
+1

Bogue: vous ne pouvez pas définir de gestionnaires d'événements en ligne à l'aide de setAttribute() dans IE. – scunliffe

0

qui fonctionnera dans Firefox, IE est un peu différent essayer

newButton.onclick = function() {askQuestion();}; 

OU

newButton.onclick = new Function('askQuestion()'); 

Cela devrait fonctionner comme je l'ai obtenu à travailler. Si cela ne fonctionne toujours le fait pas, alors YUI a un cadre d'événement dans lequel vous faire

YAHOO.util.Event.addListener(newButton,'click',askQuestion); 

Voir http://developer.yahoo.com/yui/examples/event/eventsimple.html pour plus d'exemples.

+1

Pas d'amour avec l'un de ceux-ci. –

+0

Faites quelques modifications, essayez-le maintenant. – Zoidberg

+0

Merde, quelqu'un m'a battu aussi !! – Zoidberg

0

Si vous pouvez utiliser jQuery, utilisez-le. Non seulement cela facilitera la manipulation du DOM, mais il vous permettra simplement de dire $('#myNewButton').click(function(){//hey});

et de vous assurer que cela fonctionne.

jQuery.

+1

Oui, il serait plus facile d'utiliser jQuery, mais il s'agit d'une question JavaScript générique - et jQuery n'est pas pratique dans tous les environnements. –

+1

Je voudrais faire plus avec JQuery, mais j'ai une très bonne compréhension de la façon de faire des choses en JavaScript sans, c'est comme ça que j'aborde habituellement les choses. Un de ces jours, je vais me déplacer pour comprendre profondément JQuery. –

+0

Ne pas savoir est la pire raison de ne pas utiliser. Passer les 30 minutes pour aiguiser la hache avant de décrocher le grand chêne. S'il vous plaît. @Jason: Bien sûr, ce n'est pas approprié là où jquery n'est pas possible (un analyseur javascript sans navigateur, par exemple), mais ce n'est clairement pas le cas ici. –

Questions connexes