11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour

J'ai du code javascript rajouter une option à une boite de selection (selectBox.appendChild(option))
Je voudrais après cet insertion selectionne la nouvelle option

Je fais donc essayé ca :


selectBox.selectedIndex = selectBox.lastChild.index;


Pas de problème sous FF mais ca ne fonctionne pas sous IE et Safari
Sous IE, si je rajoute un alert('toto'); juste avant, ca marche ?!!!
Modifié par nORKy (18 Sep 2006 - 10:12)
est-ce que tu lance ceci au chargment de ta page?
retente la même chose avec timer de 10ms ça se trouve ie n'a pas encore chargé ton select
masseuro a écrit :
est-ce que tu lance ceci au chargment de ta page?
retente la même chose avec timer de 10ms ça se trouve ie n'a pas encore chargé ton select


appendchild comme presque toutes les fonctions JS sont bloquantes, non ?

selectBox.appendChild(opt);
selectBox.selectedIndex = selectBox.lastChild.index;


Quand je sors de appendchild, mon selectbox est à jour ? no n?
essai ca :

selectBox.appendChild(opt);
selectBox.selectedIndex = selectBox.options[selectBox.options.length - 1].index
Zeke a écrit :
essai ca :

selectBox.appendChild(opt);
selectBox.selectedIndex = selectBox.options[selectBox.options.length - 1].index


Ca fonctionne sans fonctionner..
Comme ce que j'avais mis moi avant, si je rajoute juste avant un alert("youpla"); beh ca fonctionne... sinon, ca fonctionne pas
ET qu'est-ce que ça donne avec :

selectbox.add(new Option("intitulé", "valeur"));
selectbox.selectedIndex = selectbox.options.length -1;
QuentinC a écrit :
ET qu'est-ce que ça donne avec :

selectbox.add(new Option("intitulé", "valeur"));
selectbox.selectedIndex = selectbox.options.length -1;


Ca ne fait rien, ca n'ajoute rien dans le select. Mais aucune erreur Javascript dans FF, IE6 ou Safari.
je n'y arriverais jamais Smiley decu C'est bete du buter sur un truc en apparence si simple...
nORKy a écrit :

Smiley decu C'est bete du buter sur un truc en apparence si simple...

La solution est ailleurs, c'est évident. donnes le code simplifié de la page avec le js et le sélect et on trouveras Smiley cligne
Le code est long. En fait
Ces 2 lignes de codes (et d'autres) sont appelé par un callback onSuccess de Ajax.

Essayons de résumé
J'ai une zone de texte avec un lien. Ce lien active une fonction Js.
La fonction fait une requete Ajax..
La réponse arrive et la callback appelé.
La callback recupere ce qu'a repondu le serveur et grace à ca, fabrique une option, le rajoute dans le select et positionne (ou plutot voudrais positioner Smiley smile ) le select sur la nouvelle option fille.
Je crois que la seule solution est que je cherche tout seul.
Si j'ai bien compris, je n'ai pas le bug sous FF car dès que je rajoute l'option dans le select, il le sélectionne automatiquement
c'est masseuro qui a raison :
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Test</title>
<script type="text/javascript">
<!--
function index(){sel.selectedIndex = sel.length-1;}
function ajoute_opt(){
sel=document.getElementById('choix')
opt=document.createElement('option')
opt.appendChild(document.createTextNode("nouvelle option"))
sel.appendChild(opt);
pause=setTimeout("index()",10)
}
//-->
</script>
</head><body>
<p onmouseup="ajoute_opt()">clic ici</p>
<form action="">
<select id="choix" size="5">
<option>Molière</option>
<option>Racine</option>
<option>Jean-Jacques Goldmann</option>
<option>Corneille</option>
<option>Hugo</option>
</select>
</form>
</body></html>
C'est quand même curieux, parce que je n'ai jamais eu de problèmes avec la fonction add. Ou alors c'est addItem ? Mais il ne me semble pas pourtant.
Administrateur
Hello,

Merci d'avoir signalé ton sujet comme étant résolu. Par contre attention à l'orthographe : cela s'écrit "Résolu" (sans "t").
Une bonne orthographe est importante dans ce cas puisqu'il s'agit justement de faciliter les recherches futures dans le forum.