11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai un gros soucis avec DOM que je n'arrive pas à résoudre et j'ai recherché sur le net une solution sans succès.
J'ai fait une requête en AJAX. Mon code PHP renvoie une chaîne de caractère de dure genre "valeur1,affichage1,valeur2,affichage2" etc...
Ces valeurs doivent me permettre de créer des balises <option></option> dans un <select>

Je prends cette chaîne que je transforme en tableau : Smiley valeur1 Smiley affichage1 etc... qui doit me donner <option value="valeur1">affichage1</option>

Ensuite, je crée un élément <option> auquel je lui attribut la valeur "valeur1" et j'attribue "affichage1" à op.text.
J'ajoute ensuite mon élément à l'élément Select.

myTab = xhr.responseText.split(",");
		alert (xhr.responseText);
		for(i =0; i < myTab.length - 1; i=i+2)
			{
				op = document.createElement("option");
				op.setAttribute("value", myTab[i]);
				op.text = myTab[i+1];
				document.forms["addArticle"].selectSscat.appendChild(op);
                         }


Et ça FONCTIONNE !! Que sur Firefox par contre ! Smiley decu Sur Internet Explorer, rien ne se passe (à part l'alert).
Ai-je loupé un wagon ?

Merci pour votre aide.

PS :le myTab.lenght -1, c'est parce que j'ai une virgule à la fin de ma chaîne que je veux ignorer.

Cordialement.[/i]
Modifié par mourtazag (13 Mar 2008 - 14:14)
Essai, mais sans garantie :


for(i =0; i < myTab.length - 1; i=i+2)
{
	var op = document.createElement("option");
	op.setAttribute("value", myTab[i]);
	var label = document.createTextNode(myTab[i+1]);
	op.appendChild(label);
	document.forms["addArticle"].selectSscat.appendChild(op);
}
[/i]
Oh ! Ca marche !

Bonjour !

Merci beaucoup !
Mais comment avez-vous fait ??

Ce qui est curieux, c'est que mes balises de formulaires, <input> <select> and co sont dans des balises <label>. Et si j'ai bien compris, vous, vous créez un <label> dans mon select et vous y mettez des options...

Merci encore en tout cas.

Cordialement.
Salut,

'label' est ici qu'un nom de variable. Ce n'est pas une balise <label> mais simplement le texte de l'option.

Sous IE (je n'ai pas testé IE>6), l'attribut '.text' d'un noeud 'option' ne fonctionne pas. Ainsi, ton instruction 'op.text = myTab[i+1];' n'a aucun effet. Il faut donc créer un noeud texte dynamiquement (createTextNode) puis l'insérer dans l'option.