11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Pour commencer, désolé de l'intiutlé du sujet, je ne suis pas trop insipiré ce matin.

J'utilise la fonction suivante pour positionner une liste multiple sur le premier élément sélectionné:

function scroll(criteria){
	var sel = document.getElementById(criteria);
	for (var j=0 ; j<sel.options.length ; j++){
		if(sel.options[j].selected == true){
			sel.options[j].selected = false;
			sel.options[j].selected = true;
			return;
		}
	}
}


Cette fonction marche très bien si je l'appelle une fois. Par contre si je veux l'utiliser plusieurs fois dans une autre fonction, ça ne fonctionne plus, par exemple:

window.onload = function()
{
   scroll('maliste1');
   scroll('maliste2');
   scroll('maliste3');
};


Je ne suis pas très à l'aise avec JS mais je pense que ça vient du return dans la fonction.

Comment je peux faire pour résoudre ce soucis?

Merci de votre aide Smiley smile
Modifié par SuD (29 Mar 2007 - 12:19)
Hello,
Hacken a écrit :
Dans le cas ou tu veux juste sortir de la boucle, tu peux utiliser un break;
Oui, mais ça ne changera rien en l'occurrence.

A mon avis, le problème vient plutôt de la méthode utilisée pour le scroll :
sel.options[j].selected = false;
sel.options[j].selected = true;
Mais je ne sais pas s'il en existe d'autres...
Salut,

j'ai fait quelques tests, et finalement en ajoutant un timeout ça fonctionne... plutôt curieux :

ScrollAll = function(){
	scroll('company');
	scroll('number');
	scroll('type');
	scroll('customer');
	scroll('customer_country');
	scroll('enduser');
	scroll('enduser_country');
	scroll('product');
	scroll('system');
	scroll('company');
	scroll('order_date');
	scroll('closing_year');
}

PositionLists = function(){
	setTimeout("ScrollAll();",100);
}

window.onload = function(){
	PositionLists();
};


Merci de votre aide.

PS : Bon anniversaire Hacken Smiley cligne