2013-08-12 4 views
2

En tant qu'étudiant et quelqu'un d'assez nouveau au développement web, je rencontre le problème apparemment étrange suivant dans Javascript - mais seulement dans IE (IE9 pour être précis, n'ai pas encore essayé IE10) . Dans Firefox, le script fonctionne sans aucun problème.AppendChild (Javascript) et Internet Explorer

Le code est comme ceci:

item = document.createElement('li'); alert("alert1"); 
message = document.createTextNode("Hallo"); alert("alert2"); 
item.appendChild(message); alert("alert3");  

Dans IE, alert1 et alert2 sont présentés, mais pas Alerte3. En d'autres termes, IE9 s'étouffe sur la troisième déclaration ci-dessus (appendChild), et n'atteint jamais alert3. Étrange en effet. En utilisant Google, j'ai constaté qu'il y avait des problèmes connus avec appendChild dans IE (au moins dans les versions antérieures). Mais aucun des problèmes décrits, ou les solutions suggérées, ne semblent correspondre à mon code simple, comme cité ci-dessus.

Merci d'avance pour toute suggestion. Modifier pour ajouter: La console affiche le message d'erreur suivant: "l'objet ne prend pas en charge la propriété ou la méthode appendChild".

+0

IE est conçu pour rendre difficile et ennuyeux. Essayez plutôt de définir innerHTMLof li. – SHANK

+0

Je ne peux pas reproduire le problème avec un simple violon (test dans IE9): http://jsfiddle.net/RnwPG/ – Ian

+0

@Teemu Intéressant. Je m'attendais toujours à ce que la ligne 'item = docu ...' écrase tout ce que 'window.item' est – Ian

Répondre

4

item est une méthode native dans l'objet window d'IE.

Vous pouvez renommer votre variable, ou déclarer correctement:

var item = document.createElement('li'); 
+0

Oui, ça l'a résolu, super! Apparemment, je ne suis pas censé dire merci, mais je vais le dire quand même: merci. – Holland

+1

@Holland Vous êtes bienvenu. Les remerciements sont toujours agréables, mais le meilleur remerciement est une coche verte dans la réponse;). – Teemu

+0

Et j'ai maintenant accepté la réponse (encore nouvelle ici). – Holland