Soucis javascript => incrémentation dans une "var"

Soucis javascript => incrémentation dans une "var" - HTML/CSS - Programmation

Marsh Posté le 29-09-2005 à 13:59:27    

Bonjour,
 
J'ai une petite question ...
 
J'utilise le code suivant :
 

Code :
  1. <script>
  2. function ajoutLigne() {
  3.    // Nouveau TD (colonne de gauche)
  4.    var newData1 = window.parent.document.createElement('td');
  5.    newData1.innerHTML = '<textarea rows="3" name="titre" cols="20" class="textarea_pl"></textarea>';
  6.    newData1.align="center";
  7.    var newData2 = window.parent.document.createElement('td');
  8.    newData2.innerHTML = '<textarea rows="3" name="paragraphe" cols="20" class="textarea_pl"></textarea>';
  9.    newData2.align="center";
  10.    var newData3 = window.parent.document.createElement('td');
  11.    newData3.innerHTML = '<textarea rows="3" name="texte" cols="20" class="textarea_pl"></textarea>';
  12.    newData3.align="center";
  13.    var newData4 = window.parent.document.createElement('td');
  14.    newData4.innerHTML = '<textarea rows="3" name="histoire" cols="20" class="textarea_pl"></textarea>';
  15.    newData4.align="center";
  16.    var newData5 = window.parent.document.createElement('td');
  17.    newData5.innerHTML = '<textarea rows="3" name="date_debut" cols="20" class="textarea_pl"></textarea>';
  18.    newData5.align="center";
  19.    var newData6 = window.parent.document.createElement('td');
  20.    newData6.innerHTML = '<textarea rows="3" name="date_fin" cols="20" class="textarea_pl"></textarea>';
  21.    newData6.align="center";
  22.    var newData7 = window.parent.document.createElement('td');
  23.    newData7.innerHTML = '<textarea rows="3" name="lieu" cols="20" class="textarea_pl"></textarea>'; 
  24.    newData7.align="center";
  25.    var newData8 = window.parent.document.createElement('td');
  26.    newData8.innerHTML = '<textarea rows="3" name="nickname" cols="20" class="textarea_pl"></textarea>';
  27.    newData8.align="center";
  28.    // Nouveau TR
  29.    var newRow = window.parent.document.createElement('tr');
  30.    newRow.appendChild(newData1);
  31.    newRow.appendChild(newData2);
  32.    newRow.appendChild(newData3);
  33.    newRow.appendChild(newData4);
  34.    newRow.appendChild(newData5);
  35.    newRow.appendChild(newData6);
  36.    newRow.appendChild(newData7);
  37.    newRow.appendChild(newData8);
  38.    // Ajout du nouveau TR au tableau
  39.    document.getElementById("tableau" ).appendChild(newRow);
  40. }
  41. </script>


 
 
Donc, "petit" soucis, je voudrais que le nom de mes textarea, une fois insérés grace à ce javascript, soient suivis d'un numéro (ainsi quand on insére le textarea "titre", on se retrouve, sur la page html, avec une ligne et un textarea qui aie le nom "titre1", et si on ajoute encore une autre ligne, on aura "titre2", etc ...)
 
Une idée ?  
 
Je suis une merde en javascript ... je sais déjà pas comment j'ai pu adapter ce script a une page ;)
(pour ceux qui veulent le tester, faites donc un truc du genre <table> <tr id="tableau"> ... etc ... vous verrez ;)

Reply

Marsh Posté le 29-09-2005 à 13:59:27   

Reply

Marsh Posté le 30-09-2005 à 08:40:58    

personne a une idée ? :(

Reply

Marsh Posté le 30-09-2005 à 09:06:58    

et pourquoi utiliser que des TEXTAREA alors que dans certains cas tu devrais utiliser un input ?

Reply

Marsh Posté le 30-09-2005 à 09:16:09    

Si tu déclares une variable au début de ta page (après le body je pense) en dehors d'une fonction, et que tu l'initialise, tu peux l'incrémenter ou tu veux après.
 

var n = 0;


 
et au début de ta fonction, tu mets un joli :  
 

n++;


 
et tes lignes deviennent :  
 

newData1.innerHTML = '<textarea rows="3" name="titre'+n+'" cols="20" class="textarea_pl"></textarea>';

 
 
enfin je crois hein...
 
edit: après c'est peut-être pas très propre, mais moi j'aurais essayé ça...


Message édité par backdafuckup le 30-09-2005 à 09:17:00
Reply

Marsh Posté le 30-09-2005 à 09:19:12    

Mais fait fuper ce super tableau créé en JS avec tous les textarea inutiles.
 
au passage tu pouvvais directement tout mettre dans une boucle et les names de tes champs dans un array

Reply

Marsh Posté le 30-09-2005 à 10:41:33    

backdafuckup, j'ai modifié le script de cette manière :
 

Code :
  1. <script>
  2. var n=3;
  3. function ajoutLigne() {
  4. n++;
  5.     // Nouveau TD (colonne de gauche)
  6.     var newData1 = window.parent.document.createElement('td');
  7.     newData1.innerHTML = '<textarea rows="3" name="POUET'+n+'" cols="20" class="textarea_pl"></textarea>';
  8.     newData1.align="center";
  9.     var newData2 = window.parent.document.createElement('td');
  10.     newData2.innerHTML = '<textarea rows="3" name="CHAMP'+n+'" cols="20" class="textarea_pl"></textarea>';
  11.     newData2.align="center";
  12. [...]
  13.     // Nouveau TR
  14.     var newRow = window.parent.document.createElement('tr');
  15.     newRow.appendChild(newData1);
  16.     newRow.appendChild(newData2);
  17.     newRow.appendChild(newData3);
  18.     newRow.appendChild(newData4);
  19.     newRow.appendChild(newData5);
  20.     newRow.appendChild(newData6);
  21.     newRow.appendChild(newData7);
  22.     newRow.appendChild(newData8);
  23.     // Ajout du nouveau TR au tableau
  24.     document.getElementById("tableau" ).appendChild(newRow);
  25. }
  26. </script>


 
 
Mais niet, rien n'y fait, ça ne fonctionne pas ...
 
Ce script permet d'ajouter des lignes dans un tableau (le textarea, c'était juste pour un exemple) sans recharger la page ...
et comme j'ai dis précédement, je n'y connais pas grand chose au javascript ... je dois faire ceci pour répondre à un besoin urgent ... :( Alors bon, je ne peux que compter sur le bon vouloir d'autres personnes pour m'éclaircir (merci en tout cas de ce début d'éclaircissement), histoire que je passe ce cap et que je puisse enfin avancer ...
 
Mais là, je bloque ... encore ...
 
Help ?

Reply

Marsh Posté le 30-09-2005 à 10:45:05    

ta fontcion ajoute ligne elle ajoute pleins de ligne de la facon quelle est goupillée.
 
ensuite c'est pas un manque de connaissance en JS que tu as  
C'EST UN MANQUE DE CONNAISSANCE EN PROGRAMMATION
 
ton n++ faut l'incrementer à chaque fois que tu rajoute une data
donc entre chaque ligne tu fais un n++

Reply

Marsh Posté le 30-09-2005 à 11:09:29    

gatsusat a écrit :

ta fontcion ajoute ligne elle ajoute pleins de ligne de la facon quelle est goupillée.


 
Oui, c'est le but :)
 

gatsusat a écrit :

ensuite c'est pas un manque de connaissance en JS que tu as  
C'EST UN MANQUE DE CONNAISSANCE EN PROGRAMMATION


 
J'ai jamais dit le contraire !
 

gatsusat a écrit :

ton n++ faut l'incrementer à chaque fois que tu rajoute une data
donc entre chaque ligne tu fais un n++


 
Ben oui, c'est, ce que je pense, je viens de "tenter" de le faire ... mais pourquoi ça me prend pas en compte la chose ... moi j'en sais rien, c'est bien pour celà que je demande sur un forum ...

Reply

Marsh Posté le 30-09-2005 à 11:39:14    

   var newData1 = window.parent.document.createElement('td');  
    newData1.innerHTML = '<textarea rows="3" name="POUET'+n+'" cols="20" class="textarea_pl"></textarea>';  
n++ <==== la boulet
    newData1.align="center";  
    var newData1 = window.parent.document.createElement('td');  
    newData1.innerHTML = '<textarea rows="3" name="POUET'+n+'" cols="20" class="textarea_pl"></textarea>';  
n++ <==== la boulet
    newData1.align="center";  
    var newData1 = window.parent.document.createElement('td');  
    newData1.innerHTML = '<textarea rows="3" name="POUET'+n+'" cols="20" class="textarea_pl"></textarea>';  
n++ <==== la boulet
    newData1.align="center";  
    var newData1 = window.parent.document.createElement('td');  
    newData1.innerHTML = '<textarea rows="3" name="POUET'+n+'" cols="20" class="textarea_pl"></textarea>';  
n++ <==== la boulet
    newData1.align="center";  
    var newData1 = window.parent.document.createElement('td');  
    newData1.innerHTML = '<textarea rows="3" name="POUET'+n+'" cols="20" class="textarea_pl"></textarea>';  
n++ <==== la boulet
    newData1.align="center";  

Reply

Marsh Posté le 30-09-2005 à 11:54:54    

ben j'avais pas compris ça comme ça moi....
 
si tu regardes bien ça fonction, toutes ces textarea n'ont pas le même nom, il ne faut donc pas l'incrémenter dans la fonction plusieurs fois...
 
Par contre, à chaque appel de la fonction, ce n doit être incrémenté...
 
Enfin, c'est ce que j'avais compris moi...

Reply

Marsh Posté le 30-09-2005 à 11:54:54   

Reply

Marsh Posté le 30-09-2005 à 12:12:45    

C'est peut-être une question bête mais... pourquoi tu veux ajouter un numéro après ton titre ?

Reply

Marsh Posté le 30-09-2005 à 13:06:17    

m'enfin ca sent la popup à pleins nez, et le système bancale power !

Reply

Marsh Posté le 30-09-2005 à 14:11:34    

gatsusat : que de violence ...
 
backdafuckup : oui, tu avais bien compris ...
 
cgo2 : l'idée est de faire un formulaire, qui ressemble un peu a excel (en tout cas dans sa présentation visuelle "html" ), ou chaque personne pourrais y rajouter des informations (chiffre, texte, selon ce que j'ai crée).
L'idée est donc de pouvoir ajouter une ligne a cette page, sans recharger la page, pour après insérer le tout dans un fichier csv (qui fait office de BDD), d'où la nécessité d'avoir des noms de champs différents dès qu'on insére une nouvelle ligne (heu, j'ai été clair, ou je me suis perdu en chemin ?).
 
gatsusat : oui, mais là où je suis, je ne peux pas me permettre de faire autrement, pas de bdd, pas de language dynamique, rien ... donc html, javascript, csv ou assimilé ... bof ...
 
... sans parler de mes connaissances en programmation ;)

Reply

Marsh Posté le 30-09-2005 à 14:48:22    

Je pense que cette page va t'interresser :
http://www.the-asw.com/articles/20 [...] dynamiques

Reply

Marsh Posté le 30-09-2005 à 16:10:15    

c'est génial ça cgo2 !!!
 
merci :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed