Un onchange qui ne fonctionne pas, curieux

Bonjour, je m’en remet à vous, parce que mon onchange ne fonctionne pas et que je n’en vois vraiment pas la raison…
Voilà le select :


<select name="heure" onchange="commande('Indienne');" style="width:180px;">
<option value="">Selectionnez l'heure</option>
<option value="11;11,30" >entre 11h et 11h30</option>
<option value="11,30;12" >entre 11h30 et 12h</option>
<option value="12;12,30" >entre 12h et 12h30</option>
<option value="12,30;13" >entre 12h30 et 13h</option>
<option value="13;13,30" selected=selected>entre 13h et 13h30</option>
<option value="13,30;14" >entre 13h30 et 14h</option>
<option value="19;19,30" >entre 19h et 19h30</option>
<option value="19,30;20" >entre 19h30 et 20h</option>
<option value="20;20,30" >entre 20h et 20h30</option>
<option value="20,30;21" >entre 20h30 et 21h</option>
<option value="21;21,30" >entre 21h et 21h30</option>
<option value="21,30;22" >entre 21h30 et 22h</option>
</select>

Donc voilà, il appelle une fonction commande (laquelle appelle entre autre une fonction setcookie, je vous donne les deux au cas ou…


function commande(type) {
	t1 = document.commande.elements["heure"][document.commande.elements["heure"].selectedIndex].value;

	if (t1!=null && t1!="") {
		setcookie('heure', t1);
		setcookie('type', type);
		document.commande.submit();
	}
	else {
		alert("Vous devez entrer toutes les informations de livraison.");
	}
}
function setcookie(name, value) {
	document.cookie = name +"=" + value + ";" ;
}

Donc le problème : lorsque je change de valeur le select, rien ne se passe, ni l’alert me signifiant que je dois entrer toutes les informations de livraison, ni le submit… Si d’ailleurs j’ajoute un alert(‘bouh’); dans la fonction commande il n’est pas executé, comme si la fonction elle même n’était pas exécutée… pourtant, le “onchange” fonctionne si je remplace “commande” par “alert” en m’affichant l’alert contenant “Indienne”, et la fonction commande() fonctionne aussi puisqu’un peu plus loin dans ma page j’ai un :


<a href="javascript:commande('Indienne');">

qui fonctionne parfaitement… Je tiens à noter qu’en remplaçant :


onchange="commande('Indienne');"

par :


onchange="javascript:commande('Indienne');"

ça ne change strictement rien… Firefox ne semble donner aucun effet, quant à IE8 il affiche ce message là :


Détails de l’erreur de la page Web
Agent utilisateur : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
Horodateur : Tue, 9 Jun 2009 18:32:24 UTC
Message : Cet objet ne gère pas cette propriété ou cette méthode
Ligne : 41
Caractère : 1
Code : 0

Vraiment… ça devient trop curieux pour moi… j’y comprends rien… J’espère que vous oui… Merci

Pour firefox, tu as regardé dans la console d’erreurs ?
Affiche-la, efface tout son contenu, charge ensuite ta page. Il y a de grandes chances qu’elle te donne une erreur de syntaxe ou autre dans ton javascript.

Ah… Pour info, je viens d’apprendre qu’il y avait une console d’erreur dans Firefox… lol !
Ca affiche :


Erreur : commande is not a function
Ligne : 1

Etrange… Je vais essayer de mettre la fonction directement dans la page plutot que dans un fonctions.js… Peut-être que…


```

Erreur : commande is not a function
Ligne : 1



Aucune différence... pourtant... c'est bien une fonction... d'autant que le :


Fonctionne lui toujours très bien...

Garde tes fonctions dans ton fichier .js, c’est beaucoup plus pratique
Généralement,
Erreur : commande is not a function
Ligne : 1

ça arrive en seconde position, derrière la ligne qui donne l’erreur de syntaxe …

Peux-tu nous dire d’ou vient le commande dans
document.commande.elements ?
Si c’est un élément de la feuille ce n’est peut être pas une bonne idée de lui donner un nom identique à celui de ta fonction.

et est-tu bien sûr que
t1 = document.commande.elements[“heure”][document.commande.elements[“heure”].selectedIndex].value;
est une syntaxe correcte pour récupérer un valeur de LD dans firefox ?


	t1 = document.commande.[...]

T’es sur que dans la page, il existe un ?

Pour info, j’ai exécuté ton script et ton html dans une page vierge. Et syntaxiquement, il n’y a pas de probleme dans ce que tu nous as cité. Ton erreur peut alors venir d’un document html mal formé.
Edité le 10/06/2009 à 09:37

Alors… Tout d’abord, j’aimerai vous remercier, vous m’enlevez une enorme épine du pied (ou du doigt :p)… Pour info, j’ai rien changé, simplement le nom de la fonction, et ça fonctionne… Je suppose comme dis gcc que le fait que la fonction et le nom du formulaire porte le même nom ça ne lui plaisait pas… MERCI :slight_smile:


Merci vitamin1981, merci gableouf aussi :d