5 pièce(s) jointe(s)
remplir un select en javascript a partir d'un fichier xml
C'est la première fois que je me sert de ce genre de forum, j'ai vraiment besoin d'aide,soyez indulgent...merci
le programme est censé remplir un premier select avec les element du fichier "marque.xml" cad renault-fiat-mercedes-citroen.
Quand on choisi renault,il crée un fichier renault.xml et l'ouvre, puis passe les éléments qui s'y trouve dans le second select.
le probleme se situe à alert("fonction marque") ,si je le désactive il passe au dessus de la fonction et ne rempli rien, si je l'active(que j'enlève les /* et */) il passe dans la fonction et la rempli, j'ai rajouté un try catch au debut mais ça n'a rien changé.je vous l'envoi egalement en piece jointe, je ne sais pas trop comment ça fonctionne chez vous. Merci encore de l'aide que vous m'apporterez.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| <html>
<head>
<script type="text/javascript">
function open_file()
{
try {
xmlDoc=new ActiveXObject("Microsoft.XMLDOC");
xmlDoc.async=false;
xmlDoc.load("marque.xml");
} catch (e)
{
try {
xmlDoc=document.implementation.createDocument('','',null);
xmlDoc.load("marque.xml");
} catch (e) {alert("ERREUR");}
}
marque();
}
</script>
<script type="text/javascript">
function marque()
{
try
{
/*alert("fonction marque");*/ /*SI DESACTIVE ("/* ENLEVE DE CHAQ COTE DU ALERT") ALORS CA MARCHE*/
document.getElementById("cb_marque").options.length=0;
MAX=xmlDoc.childNodes[0].childNodes.length;
/*alert(MAX);*/
document.getElementById("cb_marque").options[0]=new Option("",null); /*cible combobox marque et le vide*/
indx=0;
tb_mrq=new Array();
for (i=0;i<MAX;i++)
{
try {
v=xmlDoc.childNodes[0].childNodes[i].getAttribute("id");
indx=indx+1;
/*alert(v+" "+i);*/
document.getElementById("cb_marque").options[indx]=new Option(v,i);
tb_mrq[i]=v;
}
catch(e) { continue;
}
}
/*alert("1 : "+v1+" 2 : "+v2); */
}
catch(e)
{}
}
</script>
<script type="text/javascript">
function getName()
{
var indx_chx=document.getElementById("cb_marque").options.selectedIndex;
var mon_choix=document.getElementById("cb_marque").options[indx_chx].value;
var p=tb_mrq[mon_choix];
/*alert("j'ai choisi : "+p);*/
/*alert("param reçu : "+param);*/
var file_xml=p + ".xml";
/*alert("nom du fichier XML : "+file_xml); */
try {
xmlDoc=new ActiveXObject("Microsoft.XMLDOC");
xmlDoc.async=false;
xmlDoc.load(file_xml);
} catch (e)
{
try {
xmlDoc=document.implementation.createDocument('','',null);
xmlDoc.load(file_xml);
} catch (e) {alert("ERREUR");}
}
modele();
}
</script>
<script type="text/javascript">
function modele()
{
alert("fonction modele");
document.getElementById("cb_modele").options.length=0;
var MAX=xmlDoc.childNodes[0].childNodes.length; /*renault=7 citroen=7*/
/*alert(MAX);*/
document.getElementById("cb_modele").options[0]=new Option("",null); /*cible combobox modele et le vide*/
var indx=0;
for (i=0;i<MAX;i++)
{
try {
v=xmlDoc.childNodes[0].childNodes[i].getAttribute("id");
indx=indx+1;
/*alert(v+" "+i);*/
document.getElementById("cb_modele").options[indx]=new Option(v,i);
}
catch(e) { continue;
}
}
/*alert("1 : "+v1+" 2 : "+v2+" 3 : "+v3);*/
}
</script>
</head>
<body onload="open_file()">
<select id="cb_marque" onchange="getName()"></select>
<select id="cb_modele"></select>
</body>
</html> |