[DOM] Soucis de manipulation du DOM sous IE
Bonjour/bonsoir ...
Mon problème est le suivant, j'ai créé une fonction qui parcour un formulaire donné et me retourne une chaine composée des noms des champs INPUT suivis de leur valeur... (style passage d'argument en méthode post) : champ1=valeur1&champ2=valeur2
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function setPostParams(form_Name){
var str='';var flag=false;
for(var i=0 in document.forms[form_Name].elements){
if(document.forms[form_Name].elements[i].nodeName=='INPUT' ){
if(flag==true){
str+="&"+document.forms[form_Name].elements[i].name+"="+document.forms[form_Name].elements[i].value;
}
else
{
str+=""+document.forms[form_Name].elements[i].name+"="+document.forms[form_Name].elements[i].value;
flag=true;
}
}
}
alert(str);
} |
Celà fonctionne très bien dans FireFox mais pas dans IE qui lui semble ne pas comprendre l'attribut 'nodeName'
Je m'arrache les cheveux alors celui qui a une solution m'épargnerai la perruque !
Merci d'avance !
PS : J'ai bien vu des choses sur google mais bien trop lourdes pour ce que je veux en faire.
La vérité est ailleurs ...
J'ai fait plusieurs tests et je me suis aperçu qu'en fait IE parcourt differement les tableaux d'objets HTMLElements dans la boucle for( ... in ...) par rapport à Firefox.
Et il s'avère que le code suivant fonctionne !:yaisse2:
Code:
1 2 3 4 5 6 7 8 9 10
| function setPostParams(form_Name){
var str=''; var n=document.forms[form_Name].elements.length;
for(var i=0 ;i<n;i++){
if(document.forms[form_Name].elements[i].nodeName=='INPUT'){
if(i>0) {str+="&";}
str+=""+document.forms[form_Name].elements[i].name+"="+document.forms[form_Name].elements[i].value;
}
}
return str;
} |
L'attribut nodeName est donc bien connu sous ie (ie7 pour l'exemple)
Conclusion : Attention à la boucle for(...in...)
Merci à tous !:)