Bonjour,
Je suis perdu dans la définition d'une fonction et je ne vois pas comment faire.
Pour mieux comprend the problème : ma page de test.
(affiche code source)
Si je devais formuler ma question à priori je dirais comment renommer la valeur d’une fonction dans un select, mais je prends sans doute le problème de la mauvaise façon.
J’explique :
Lorsque je sélectionne un provider (prenons Loueur de bateaux indépendant), l’application rapatrie tous les bateaux connus et gérés par ce fournisseur. (Ici 3 bateaux). Je stocke ces infos dans une variable js.
Par défaut, la liste fait apparaître le premier bateau connu.
Si on sélectionne un autre bateau dans la liste, j’ai une fonction qui met à jour les infos dans les autres champs (model, year et name).
Cette fonction est majinfosbateau(1). L’idée est de transmettre à la fonction le numéro de ligne sélectionné. C’est pourquoi par défaut j’ai mis en dur dans le code HTML : majinfosbateau(1).
Maintenant, on peut rajouter des lignes au tableau. Lorsqu’on rajoute une ligne, la fonction ajoutLigneAuTableau(num_tbody) crée la même chose que la 1ere ligne. Elle crée donc de nouvelle cellules avec les même attributs, y compris les id et name.
Comme tous les champs doivent avoir des id et name uniques (numéroté), je dois utiliser une fonction qui me rénumote le tout. J’utilise la fonction majNumLignes(num_tbody).
J’arrive à modifier les numéros des id et name, mais je n’arrive pas à renuméroter la valeur du onchange=’majinfosbateau(1)’.
D’où mes 2 questions :
1) Comment peut-on modifier la fonction majNumLignes(num_tbody) pour avoir onchange=’majinfosbateau(2)’, onchange=’majinfosbateau(3)’, etc.
2) Peut on faire autrement et plus simple en modifiant cette fois-ci la fonction majinfosbateau() de sorte à ne pas à avoir à renommer ma fonction majinfosbateau(n) ?
Fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 function majNumLignes(num_tbody) { // Fonction qui permet de numéroter les differents champs var nbLignes = nbLignesBateaux ; for(var i = 0 ; i < nbLignes ; i++){ var tbl = document.getElementById('tableau_bateaux'); //tbl.tBodies[num_tbody].rows[i].className = 'bleu'+(i%2); //Mise à jour pour test du compteur de ligne (cellule 1) tbl.tBodies[num_tbody].rows[i].cells[1].innerHTML = (i+1); //Mise a jour de la cellule 2 (liste des bateaux) tbl.tBodies[num_tbody].rows[i].cells[2].getElementsByTagName('SELECT')[0].setAttribute('name','id_bateau'+(i+1)); tbl.tBodies[num_tbody].rows[i].cells[2].getElementsByTagName('SELECT')[0].setAttribute('id','id_bateau'+(i+1)); //tbl.tBodies[num_tbody].rows[i].cells[2].getElementsByTagName('SELECT')[0].onchange = function () {majinfosbateau()}; //Mise a jour de la colonne 3(liste des modelet type de bateaux) tbl.tBodies[num_tbody].rows[i].cells[3].getElementsByTagName('SELECT')[0].setAttribute('name','id_model_bateau'+(i+1)); tbl.tBodies[num_tbody].rows[i].cells[3].getElementsByTagName('SELECT')[0].setAttribute('id','id_model_bateau'+(i+1)); //Mise a jour de la colonne 4 (annee de bateaux) tbl.tBodies[num_tbody].rows[i].cells[4].getElementsByTagName('INPUT')[0].setAttribute('name','annee_bateau'+(i+1)); tbl.tBodies[num_tbody].rows[i].cells[4].getElementsByTagName('INPUT')[0].setAttribute('id','annee_bateau'+(i+1)); //Mise a jour de la colonne 5 (nom du bateaux) tbl.tBodies[num_tbody].rows[i].cells[5].getElementsByTagName('INPUT')[0].setAttribute('name','nom_bateau'+(i+1)); tbl.tBodies[num_tbody].rows[i].cells[5].getElementsByTagName('INPUT')[0].setAttribute('id','nom_bateau'+(i+1)); } var id_bateau_selected = document.getElementById("id_bateau1").value; var model_selected = document.getElementById("id_model_bateau1").value; document.getElementById('id_bateau'+nbLignes).value = id_bateau_selected; document.getElementById('id_model_bateau'+nbLignes).value = model_selected; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 function majinfosbateau(num) { // On recupere l'id_bateau qui vient d'etre selectionne appartenant au champ select dont le numero est num var id_bateau_selectionne = document.getElementById('id_bateau'+num).value; alert ('id_bateau_selectionne :'+id_bateau_selectionne); if (id_bateau_selectionne == 0) { document.getElementById('id_model_bateau'+num).value = 0; document.getElementById('annee_bateau'+num).value = ''; document.getElementById('nom_bateau'+num).value = ''; } else { document.getElementById('id_model_bateau'+num).value = eval('arraybateau['+id_bateau_selectionne+']')[4]; document.getElementById('annee_bateau'+num).value = eval('arraybateau['+id_bateau_selectionne+']')[3]; document.getElementById('nom_bateau'+num).value = eval('arraybateau['+id_bateau_selectionne+']')[2]; } }
Partager