Je vais tacher d'être clair sans vous bombarder d'un message illisible. En précisant que j'ai parcouru le fofo mais pas trouver la soluce :/
Donc le truc c'est :
-> un formulaire avec plusieurs <select> qui se suivent.
-> le premier <select> contient des gammes.
-> le deuxième contient des couleurs qui sont affichées dynamiquement en fonction de la gamme que l'on choisit.
-> javascript et php
Tout fonctionne sous Safari mais sous IE, le deuxième <select> est vide si je sélectionne une gamme dans le premier <select>.
Voici les bouts de codes importants (je précise que je débute en javascript / php).
Je vais tacher d'être clair sans vous bombarder d'un message illisible. En précisant que j'ai parcouru le fofo mais pas trouver la soluce :/ Donc le truc c'est :
-> un formulaire avec plusieurs select
-> le premier présente des gammes
-> le deuxieme presente des couleurs qui sont affichées dynamiquement par le biais du premier select.
-> javascript / php / navigateur.
>>sans vous bombarder d'un message illisible
trop tard ( ou trottoir comme tu veux )
le html pris en compte ! et on ne voit rien de ton code ( ou si peu ! )
reviens à la textbox classqiue
( en dessous du bouton ajouter :
[../infomsg.aspx?ajout=&ID=1218977&txtmode=0 Si vous n'arrivez pas à saisir votre message, CLIQUEZ ICI pour revenir à une "TextBox classique"]
)
ou poste nous ton code depuis un éditeur de texte basique
pas depuis ton outil de développement.
ah.. ça va mieux....
à priori c'est l'histoire de select liés ?
innerHTML ne fonctionne pas avec IE pour un select
( ce que tu dois utiliser peut-être ? )
Tout d'abord merci de t'intéresser à min soucis au vu du nombre de post qui existe sur le sujet des select :)
Alors j'aime bien e que je vois car cela utilise ce que la base que j'ai. Une simple question :
le pavé suivant : "function newOption(sel, val, label){..." est à mettre en haut du fichier .js et juste après j'enquille sur les conditions ?
Alors j'ai essayé avec ton code ce qui me donne ça :
FICHIER JS :
function newOption(sel, val, label){
var newOption = document.createElement('option');
newOption.setAttribute('value', val);
var newOptionLabel = document.createTextNode(label);
newOption.appendChild(newOptionLabel);
document.getElementById(sel).appendChild(newOption);
}
Ha oui effectivement ça risque de ne pas fonctionner. La fonction newOption() que je t'ai proposé est une fonction générique qui te permet d'ajouter des options à un select.
Dans ton select tu as mis onchange= "newOption();" hors ce n'est pas tout à fait ça. Il faut que ton select lance une fonction qui elle va utiliser la fonction newOption(). Enfin bref, voilà les changements à faire :
>>onchange="gensel2();" => pour toi le point virgule après les ()
>>est primordial où il n'entraine pas de soucis ?
à priori, les ordres js doivent se terminer par ;
est-ce que l'omettre porte à conséquence ?
( oulah ???
faudrait voir ce que cela suppose coté navigateur et le reste )
mais je le met toujours ( pas toujours où il faudrait ! j'en oublie )
pour ajouter <option> j'utilise plus volontiers
select.length++;
select.options[select.length-1].text="le texte visible";
ça me semble nettement plus simple,
mais XTremDuke a sûrement raison.
@+
Alors voici ce que j'ai aujourd'hui. Concrètement, les informations sont modifiées en fonction de la gamme choisie. Le seul soucis, c'est qu'il rajoute les option alors qu'il faudrait qu'il les remplace :). Je comprends l'organisation du code mais je ne m'y connais pas assez pour peaufiner cela par rapport à ce soucis. Faut-il rajouter une condition ?
FICHIER JS :
function newOption(sel, val, label){
var newOption = document.createElement('option');
newOption.setAttribute('value', val);
var newOptionLabel = document.createTextNode(label);
newOption.appendChild(newOptionLabel);
document.getElementById(sel).appendChild(newOption);
}
J'ai trouver certaines fonctions, j'ai essayé de les utiliser mais rien n'y fait. Car pour moi, sans être expert, il faut que si des options existent déjà, on les remplace, donc que l'on supprime et que l'on recréé. Voici ce que j'ai trouvé comme truc intéressant :
setAttribute(attribut,valeur)
Ajoute un nouvel attribut avec la valeur à l'objet.
appendChild(enfant)
Ajoute enfant en tant que nœud enfant (childNode) à l'objet. enfant doit être un objet, vous ne pouvez pas utiliser de chaîne de caractères.
cloneNode()
Copie le nœud entier avec tous les nœuds enfants.
hasChildNodes()
Vérifie si un objet possède des nœuds enfants (childNodes), et renvoie true si c'est le cas.
insertBefore(nouvelEnfant,ancienEnfant)
Insère nouvelEnfant avant ancienEnfant dans l'arbre du document.
removeChild(ancienEnfant)
Supprime le nœud enfant ancienEnfant.
replaceChild(nouvelEnfant,ancienEnfant)
Remplace ancienEnfant par nouvelEnfant.
removeAttribute(attribut)
Supprime l'attribut de l'objet.