2010-07-31 9 views
2

j'ai les lignes suivantes de Javascript:différence Javascript entre IE et Firefox

var button = document.getElementById("scriptsubmit"); 
button.setAttribute("class", "remove"); 

Dans Firefox, cela fonctionne parfaitement et dans l'explorateur Internet, il ne fonctionne pas. Je suis conscient qu'Internet Explorer s'attend à ce que la classe soit className, mais je ne sais pas comment détecter les éléments à utiliser en tant que détection d'objet ne semble pas s'appliquer dans ce cas.

Merci pour vos réponses

+1

En effet, vous ne devriez jamais utiliser 'getAttribute' /' setAttribute' sur les documents HTML. Il est buggé dans IE et il est moins lisible que d'utiliser les propriétés HTML DOM niveau 1 comme 'button.className'. – bobince

Répondre

5

Vous pouvez simplement utiliser la propriété className directement dans les deux navigateurs:

var button = document.getElementById("scriptsubmit"); 
button.className = "remove"; 
+0

Fonctionne comme un charme! – YsoL8

2

Les deux navigateurs prennent en charge className, donc il n'y a pas besoin de quoi que ce soit détecter.

+0

Sauf si ma version de Firefox est cassée, ce n'est pas vrai. – YsoL8

+1

C'est vrai, mais vous ne pouvez pas y accéder avec "setAttribute"/"getAttribute". – Pointy

+0

... pas la façon dont j'essayais dans la question de toute façon – YsoL8

0

Selon ces tests, setAttribute() n'est pas entièrement pris en charge dans IE: http://www.quirksmode.org/dom/w3c_core.html#t1110

Une façon de contourner cela est de créer un nouvel élément HTML, définissez ses propriétés, puis remplacez le bouton avec elle, comme si :

var newButton=document.createElement("button"); 
newButton.class="remove"; 

var oldButton=document.getElementById("button"); 
document.removeChild(oldButton); 
document.appendChild(newButton);