[JAVASCRIPT] Bug IE - getelementbyid
Résolu
lingus
-
lingus -
lingus -
Bonjour tout le monde,
J imagine que le problème a déjà été posé des milliers de fois mais je trouve pas de solution à celui-ci.
J'ai donc un tableau en HTML qui a un id="aloha". Quand je veux accéder à ce tableau en javascript, sous firefox il reconnait bien mon tableau et il peu y accéder (alert donne "[object HTML tableElement]").
Mais sous IE(7) il ne reconnait pas l'objet (alert donne "[object]").
Je precise qu'il n'y aucun autre lement dans ma page qui a "aloha" pour id ou name, et que je n ai aucun meta tage de ce nom non plus.
Quelqu'un aurait il une solution ?
code javascript :
code HTML:
J imagine que le problème a déjà été posé des milliers de fois mais je trouve pas de solution à celui-ci.
J'ai donc un tableau en HTML qui a un id="aloha". Quand je veux accéder à ce tableau en javascript, sous firefox il reconnait bien mon tableau et il peu y accéder (alert donne "[object HTML tableElement]").
Mais sous IE(7) il ne reconnait pas l'objet (alert donne "[object]").
Je precise qu'il n'y aucun autre lement dans ma page qui a "aloha" pour id ou name, et que je n ai aucun meta tage de ce nom non plus.
Quelqu'un aurait il une solution ?
code javascript :
function Test()
{
var table = document.getElementsByName('aloha');
alert(table);
}
code HTML:
<table id="aloha">
<tr>
<td><a href="javascript:;" onclick="Test();">[+] Test</a></td>
</tr>
</table>
Configuration: Windows XP Firefox 2.0.0.6
4 réponses
-
J'ai enfin identifié mon véritable bug. Ca pourra peut etre aider les débutants en DOM comme moi.
En fait chose que je ne savais pas, sous IE lorsque l'on veut céer un tableau (<table>) en javascript il faut rajouter la balise <tbody>.
un petit lien qui explique ca mieux que moi : http://blognote-info.com -
Erreur de frappe, j'étais en plein test c'est pas getElementsByName() mais bien getElementById() que j'utilise.
Désolé -
Bonsoir
Non, y'a pas de bug. C'est juste qu'IE ne type pas vraiment les objets et affiche toujours [Object]
La preuve :
<html> <head> <script type="text/javascript"> <!-- function space(size) { var str=""; for (var i = 0; i < size; i++) { str+=" "; } return str; } function getChildNodesInfo(node, level) { if (level==undefined) level = 0; // Parcours des noeuds enfants var txt = ""; var i = 0; while (node) { txt = "- "+space(level*3)+"node["+i+"].nodeType = "+node.nodeType+"\n"+ "- "+space(level*3)+"node["+i+"].nodeName = "+node.nodeName+"\n"+ "- "+space(level*3)+"node["+i+"].nodeValue = "+node.nodeValue+"\n"; if (node.firstChild) { level++; txt = txt +"\n"+getChildNodesInfo(node.firstChild,level); } node = node.nextSibling; } return txt; } function Test() { var table = document.getElementById('aloha'); // Parcours de tous les noeuds de l'élément DOM : gaffe ça peut planter IE ! alert(getChildNodesInfo(table,1)); } //--> </script> </head> <body> <table id="aloha"> <tr> <td><a href="javascript:;" onclick="Test();">[+] Test</a></td> </tr> </table> </body> </html>
Donc on parcours bien l'arbre DOM pour l'élément table aloha
Voilà -
Ha oui, j ai donc mal identifié mon bug.
Car j'ai un script qui marche comme je veux sous firefox mais qui ne fait absolument rien sous IE.
Mais bon je regarderai ca demain.
Merci beaucoup pour tes précisions PhP