2009-10-17 8 views
0

Je le code javascript suivantQu'est-ce que je fais mal avec cet appel à document.getElementById

var myDiv = document.getElementById("myDiv"); 
alert(myDiv);     
myDiv.style.display = 'none'; 

l'appel à alerte (myDiv) montre que myDiv est avec succès non nulle et je vois que l'objet (div) a toutes les propriétés nécessaires définies etc.

Cependant, l'appel à myDiv.style.display = Aucun résultats dans un objet requis javascript erreur dans IE 8.

Des pointeurs sur ce que j'ai besoin de vérifier?

Merci.

+1

Pouvez-vous mettre la source HTML de votre div? –

Répondre

2

Assurez-vous que votre balisage html est valide. Vous pouvez utiliser la validation service provided par w3c. Ou si vous utilisez un contrôle IDE s'il dispose d'une fonction de validation

+0

J'ai revérifié, et revérifié, et revérifié et vous aviez raison, j'ai eu une faute de frappe qui causait le problème. Merci :) – Senkwe

+0

La plupart du temps si simple DOM JavaScript échoue .. le balisage est le problème :-) – Xinus

1

Assurez-vous que ce script est appelé au window.onload, pas avant.

Edit: aussi, assurez-vous d'éviter l'écueil commun de le faire:

window.onload = foo() # PROBABLY WRONG 

Quand vraiment vous vouliez faire:

window.onload = foo 
+0

Salut, eh bien je l'appelle à body.onload mais je vais essayer votre suggestion et de rendre compte. – Senkwe

0

Vérifiez également que, outre que d'essayer cela après le DOM a chargé, que vous n'avez pas plus d'un élément sur la page avec le même ID myDiv. Voir Source et essayez de trouver où cela apparaît, assurez-vous qu'il n'est pas accidentellement répété.

Bonne chance!

0

Un élément html aura/pourra avoir un identifiant et un nom. Dans mon application, nous utilisons les pages de cadres (asp.net) donc quand vous placez un contrôle dans une page de contenu qui est dérivé par page maître,

l'id du contrôle sera comme « ctl00_ctl00_ctlname »

et

le nom aura "ctl00 $ ctl00 $ ctlname"

Maintenant, si getElementById fonctionne très bien dans IE7 (IE 7) et non pas dans IE8 (IE 8) alors une raison possible est la valeur/attribut transmis dans la méthode getElementById. Ceci est dû au fait qu'IE7 a utilisé le nom pour trouver le contrôle si l'ID ne correspond pas.

En bref, si vous passez la valeur d'attribut name puis le getElementById() ne fonctionne pas dans IE8

heureux codage :)

Questions connexes