[JS] problème de variable
Résolu
okuni
Messages postés
1325
Statut
Membre
-
okuni Messages postés 1325 Statut Membre -
okuni Messages postés 1325 Statut Membre -
Bonjour,
J'ai modifié un script JS trouvé sur le net. Il fonctionne sauf sur un point.
Le principe est d'ajouté pour chaque tableau 2 champs.
Le problème réside dans la variable count_$i
où $i est l'identification du tableau (se trouvant dans un formulaire, je l'utilise pour savoir d'où viens l'information)
en vérifiant le code source j'ai bien count_0 = 0 et count_1 = 0
Ce qui est normal mais bizarrement, lorsque je clique sur le lien pour ajouter un champ, peu importe sur quel lien je clique, il ne fait pas la différence entre count_0 et count_1.
Donc problème car les nom des champs ne seront pas en continu à partir de 0.
exemple :
Si je clique 1 fois sur le premier, une fois sur le second et encore une fois sur le premier, j'obtient la suite 1, 2, 3. Donc pour le premier tableau, l'id 2 n'existe pas. J'aurai du obtenir 1, 1, 2.
Voici le code :
Pour tester, voici le lien : http://www.blizer.net/test.html
Merci d'avance.
L'amour, c'est comme les spaghettis; quand c'est mou, c'est cuit. (proverbe belge)
J'ai modifié un script JS trouvé sur le net. Il fonctionne sauf sur un point.
Le principe est d'ajouté pour chaque tableau 2 champs.
Le problème réside dans la variable count_$i
où $i est l'identification du tableau (se trouvant dans un formulaire, je l'utilise pour savoir d'où viens l'information)
en vérifiant le code source j'ai bien count_0 = 0 et count_1 = 0
Ce qui est normal mais bizarrement, lorsque je clique sur le lien pour ajouter un champ, peu importe sur quel lien je clique, il ne fait pas la différence entre count_0 et count_1.
Donc problème car les nom des champs ne seront pas en continu à partir de 0.
exemple :
Si je clique 1 fois sur le premier, une fois sur le second et encore une fois sur le premier, j'obtient la suite 1, 2, 3. Donc pour le premier tableau, l'id 2 n'existe pas. J'aurai du obtenir 1, 1, 2.
Voici le code :
<?php for ($i = 0; $i <= 1; $i++) { ?> <script language="javascript" type="text/javascript"> //Commence à compter à 0 var count_<?php echo $i;?> = 0; function one_more_ligne (i) { count_<?php echo $i;?>++; var tr = document.createElement("tr"); var td_1 = document.createElement("td"); var td_2 = document.createElement("td"); var inp1 = document.createElement("input"); var inp2 = document.createElement("input"); inp1.type = "text"; inp2.type = "text"; inp1.name = "lien["+i+"]["+count_<?php echo $i;?>+"]"; inp1.id = "lien["+i+"]["+count_<?php echo $i;?>+"]"; inp2.name = "commentaire["+i+"]["+count_<?php echo $i;?>+"]"; inp2.id = "commentaire["+i+"]["+count_<?php echo $i;?>+"]"; td_1.appendChild(inp1); td_2.appendChild(inp2); tr.appendChild(td_1); tr.appendChild(td_2); byId("table_lien_"+i+"").getElementsByTagName('tbody')[0].appendChild(tr); } function byId(elmId){ var elm = document.getElementById(elmId); if(elm==null) elm = document.getElementsByName(elmId)[0]; //Affiche une alerte pour voir directement le code HTML //alert(elm.innerHTML); return elm; } </script> <table id="table_lien_<?php echo $i;?>" name="table_lien_<?php echo $i;?>"> <tbody> <tr> <td>Lien</td> <td>Commentaire</td> </tr> <tr> <td colspan="2" align="center"><a href="#" onclick="one_more_ligne(<?php echo $i;?>);">[+] Ajouter une ligne</a></td> </tr> <tr> <td><input type="text" id="lien[<?php echo $i;?>][0]" name="lien[<?php echo $i;?>][0]" /></td> <td><input type="text" id="commentaire[<?php echo $i;?>][0]" name="commentaire[<?php echo $i;?>][0]" /></td> </tr> </tbody> </table> <?php } ?>
Pour tester, voici le lien : http://www.blizer.net/test.html
Merci d'avance.
L'amour, c'est comme les spaghettis; quand c'est mou, c'est cuit. (proverbe belge)
A voir également:
- [JS] problème de variable
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp - Forum Microsoft Office
- Variable d'environnement temp - Forum Word
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
- Vérifiez la variable d'environnement TEMP. QUE FAIRE ????? ✓ - Forum Microsoft Office
1 réponse
Bonjour
Normal, ta fonction one_more_ligne est définie deux fois avec exactement le même nom ! Tes clics appelle toujours la première ou la seconde, je ne sais pas, et travaillent donc toujours avec count_0 ou count_1, l'autre variable n'est pas utilisée.
Je n'ai pas suivi le détail de ce que tu cherches à faire, mais il me semble que ta fonction devrait être définie en dehors du 'for' et qu'au lieu d'avoir des variables count_0,count_1, etc... tu devrais avoir un tableau
Normal, ta fonction one_more_ligne est définie deux fois avec exactement le même nom ! Tes clics appelle toujours la première ou la seconde, je ne sais pas, et travaillent donc toujours avec count_0 ou count_1, l'autre variable n'est pas utilisée.
Je n'ai pas suivi le détail de ce que tu cherches à faire, mais il me semble que ta fonction devrait être définie en dehors du 'for' et qu'au lieu d'avoir des variables count_0,count_1, etc... tu devrais avoir un tableau
okuni
Messages postés
1325
Statut
Membre
126
Ok merci pour ton aide :D