Il existe plusieurs façons de gérer les événements avec HTML/DOM. Il n'y a pas vraiment de bonne ou de mauvaise façon mais différentes façons sont utiles dans différentes situations.
1: Il y a la définition dans le code HTML:
<input id="clickMe" type="button" value="clickme" onclick="doFunction();" />
2: Il y a l'ajouter à la propriété DOM pour l'événement en Javascript:
//- Using a function pointer:
document.getElementById("clickMe").onclick = doFunction;
//- Using an anonymous function:
document.getElementById("clickMe").onclick = function() { alert('hello!'); };
3: Et il y a la fixation d'une fonction le gestionnaire d'événements utilisant Javascript:
var el = document.getElementById("clickMe");
if (el.addEventListener)
el.addEventListener("click", doFunction, false);
else if (el.attachEvent)
el.attachEvent('onclick', doFunction);
Les deux méthodes permettent l'inline/anonymou Les fonctions s et les deux doivent être déclarées après que l'élément a été analysé à partir du document. La première méthode n'est pas XHTML valide car l'attribut onclick n'est pas dans la spécification XHTML.
Les 1ère et 2ème méthodes sont mutuellement exclusives, ce qui signifie que l'utilisation de l'une (la 2ème) remplacera l'autre (la 1ère). La troisième méthode vous permettra d'attacher autant de fonctions que vous le souhaitez au même gestionnaire d'événements, même si la première ou la deuxième méthode a été utilisée aussi. Le problème est probablement lié à votre fonction CapacityChart()
. Après avoir visité votre lien et exécuté votre script, la fonction CapacityChart() s'exécute et les deux popups sont ouverts (un est fermé selon le script).Où vous avez la ligne suivante:
CapacityWindow.document.write(s);
Essayez les options suivantes à la place:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
EDIT
Quand j'ai vu votre code Je pensais que vous écrivez spécifiquement pour IE. Comme d'autres l'ont mentionné, vous devrez remplacer les références à document.all
par document.getElementById
. Cependant, vous aurez toujours la tâche de réparer le script après cela, donc je vous recommande de le faire fonctionner au moins dans IE au début, car toute erreur que vous faites en changeant le code pour travailler dans le navigateur pourrait causer encore plus de confusion. Une fois qu'il fonctionne dans IE, il sera plus facile de savoir si cela fonctionne dans d'autres navigateurs pendant que vous mettez à jour le code.
s'il vous plaît définir « doesn ne semble pas fonctionner correctement ". quelle (s) erreur (s) obtenez-vous lorsque vous cliquez dessus? –
Le bouton fonctionne dans IE8, mais pas FF 3.5 en raison d'une erreur JavaScript (voir la réponse de Jeff) –
Oui, il s'avère que document.all est une chose non standard d'IE; mis à jour ma réponse avec une alternative proposée. – Jeff