double liste

Invité
Invité n'ayant pas de compte PHPfrance

11 avr. 2007, 09:17

Bonjour à tous,

J'ai récupéré un script qui permet de transférer des items d'une liste déroulante à l'autre.Ici, il s'agit de produits qui doivent être transférés d'un catalogue à un autre.
http://www.librairiegiard.com/admin/ind ... transferts

Je rame un peu pour finaliser car j'obtiens une erreur dans FF, qui n'est pas reproductible sous IE. Quand j'essaye de transférer un item, j'obtiens l'erreur:
Select has no properties
Dans la fonction suivante:
		function getSelectedValues (select) {
			var selValues = new Array();
			for (j = 0; j < select.options.length; j++){
				selValues[selValues.length] = select.options[j].value;					
			}
			return selValues;
		}
Je vous remercie pour toutes les observations que vous pourrez m'adresser sur le code javascript de la page.

Invité
Invité n'ayant pas de compte PHPfrance

11 avr. 2007, 09:25

pour info, voici le bouton qui déclenche le transfert
<INPUT name="button" type="button" class="transfert" onclick="list = moveSelectedOptions('list1','list2'); " value="Ajouter &darr;"> 
Et la fonction qui déclenche le transfert
		function moveSelectedOptions(from, to){
			fromSelect = document.getElementsByName(from)[0]; 		
			selOpt = getSelectedOptions(fromSelect);			
			var selValues = new Array();
			if(selOpt.length>0){				
				selValues = getSelectedValues(fromSelect);
				toSelect=document.getElementsByName(to)[0];
				for(i=0;i<selOpt.length;i++){
					option = selOpt[i];
					fromSelect.removeChild(option);						
					toSelect.appendChild(option);
				}
			}	
			return selValues;
		}
L'erreur semble se trouver dans la fonction getSelectedValues qui récupère les valeurs de la liste, qui se trouve au début de mon post. Je rappelle que tout marche sous ie, pas ff.

Invité
Invité n'ayant pas de compte PHPfrance

11 avr. 2007, 10:53

dans la fonction moveSelectedOptions, il y a l'instruction suivante au début:
fromSelect = document.getElementsByName(from)[0];
Un alert(document.getElementsByName(from)[0]); me renvoie undefined.
A quoi sert cette ligne? serait-ce la source de mes ennuis?

Invité
Invité n'ayant pas de compte PHPfrance

11 avr. 2007, 11:07

c'est bien ça. Ma fonction qui transfère les éléments prend en argument la liste de départ et celle d'arriée:
moveSelectedOptions(from, to)
Ensuite elle essaye d'identifier la liste de départ avec
fromSelect = document.getElementsByName(from)[0];
La fonction getSelectedOptions est ensuite déclenchée pour récupérer les valeurs de la liste de départ
selOpt = getSelectedOptions(fromSelect);
L'erreur se produit a ce niveau. Dans la fonction getSelectedOptions, un boucle for tente de prendre les valeurs:
function getSelectedValues (select) {
var selValues = new Array();
for (j = 0; j < select.options.length; j++){
selValues[selValues.length] = select.options[j].value;		
}
return selValues;
}
Cette boucle renvoie l'erreur "Select has no values", donc les valeurs n'ont pas été récupérées. La liste n'est pas identifiée et ça doit être à cause de la première ligne qui cherche la liste, mais je ne vois pas pourquoi. Un problème de tableau?

Invité
Invité n'ayant pas de compte PHPfrance

16 avr. 2007, 01:03

j'ai trouvé: en mettant getElementsById au lieu de getElementsByName, ça marche.

Mammouth du PHP | 19672 Messages

16 avr. 2007, 07:48

:!: Attention : Il n'y a pas de "s" à getElementById contrairement à getElementsByName
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: