[Résolu] Javascript Rajout de td en chaine dans un tableau

Javascript Rajout de td en chaine dans un tableau [Résolu] - HTML/CSS - Programmation

Marsh Posté le 29-09-2007 à 23:18:59    

Salut!
 
Je m'initie au DOM...
Et forcément ça ne fonctionne pas.
Alors si l'oeil aiguisé de l'un ou l'une d'entre vous peut trouver l'erreur, ça m'aidera énormément.
Voici le code :
 

Code :
  1. function init()
  2. {
  3. var Tab = new Array("Ali","2001 Odyssée de l'espace","A la recherche du bonheur", "AI", "A l'aube du sixième jour", "Blood diamond", "Borat", "Ghost Dog", "Harry Potter 1 l'école des sorciers", "Harry Potter 2 La chambre des secrets", "Harry Potter 3 et le prisonnier d'Azkaban", "Harry Potter 4 Et la coupe de feu", "Hitcher", "Le monde de Narnia", "Salsa", "Saw2", "The Blues Brothers", "Une histoire vraie","Ils","21 grammes","Les infiltrés","Taxi Driver","O Brother","Ratatouille","Fargo" );
  4. for (i=0;i<Tab.length;i++)
  5.  {
  6.  var chekNodeB = document.createElement("checkbox" );
  7.  var chekNodeC = document.createElement("checkbox" );
  8.  var chekNodeD = document.createElement("checkbox" );
  9.  var chekNodeE = document.createElement("checkbox" );
  10.  chekNodeB.name = "cfilm" + i;
  11.  chekNodeB.value = "1";
  12.  chekNodeC.name = "mfilm" + i;
  13.  chekNodeC.value = "1";
  14.  chekNodeD.name = "lfilm" + i;
  15.  chekNodeD.value = "1";
  16.  chekNodeE.name = "ffilm" + i;
  17.  chekNodeE.value = "1";
  18.  var trNode = document.createElement("tr" );
  19.  var tdNode = document.createElement("td" );
  20.  var shtext = i+"-"+Tab[i];
  21.  var textmot = document.createTextNode(shtext);
  22.  tdNode.className = 'h2';
  23.  tdNode.appendChild(textmot);
  24.  trNode.appendChild(tdNode);
  25.  tdNode = document.createElement("td" );
  26.  tdNode.appendChild(chekNodeB);
  27.  trNode.appendChild(tdNode);
  28.  tdNode = document.createElement("td" );
  29.  tdNode.appendChild(chekNodeC);
  30.  trNode.appendChild(tdNode);
  31.  tdNode = document.createElement("td" );
  32.  tdNode.appendChild(chekNodeD);
  33.  trNode.appendChild(tdNode);
  34.  tdNode = document.createElement("td" );
  35.  tdNode.appendChild(chekNodeE);
  36.  document.getElementById("corpus" ).appendChild(trNode);
  37.  }
  38. var inputNode = document.createElement("input" );
  39. inputNode.type = "hidden";
  40. inputNode.name = "total";
  41. inputNode.value = Tab.length;
  42. }


 
Sachant que corpus est un id de tableau.
 
Merci infiniment!


Message édité par ledzep2 le 22-10-2007 à 17:32:38
Reply

Marsh Posté le 29-09-2007 à 23:18:59   

Reply

Marsh Posté le 30-09-2007 à 02:11:35    

Code :
  1. var monInput = document.createElement('input');
  2. monInput.setAttribute('type','checkbox');


 
Ca devrait aller mieux, sans garantie qu'ils y en aient pas d'autres cachées :whistle:

Reply

Marsh Posté le 30-09-2007 à 14:13:31    

leflos5 a écrit :

Code :
  1. var monInput = document.createElement('input');
  2. monInput.setAttribute('type','checkbox');


 
Ca devrait aller mieux, sans garantie qu'ils y en aient pas d'autres cachées :whistle:


 
Merci en tout cas ça affiche les checkbox...c'est déjà ça! Enfin que sous firefox parce que sous ie...y a que dalle!
 
Maintenant pour la fin :
 

Code :
  1. var inputNode = document.createElement("input" );
  2. inputNode.setAttribute('type','hidden');
  3. inputNode.setAttribute('name',"total" );
  4. inputNode.setAttribute('value',Tab.length);


 
J'ai un soucis toujours.
Quand je le passe dans mon formulaire et que j'essaie de récupérer la valeur de 'total' beh y a rien.
Donc je suppose que j'ai encore une erreur de syntaxe ne serait ce que dans ce petit paragraphe.
Si on arrive à le solutionner je passe aux checkbox!
A little bit more help please! :D  
 

Reply

Marsh Posté le 30-09-2007 à 23:31:44    

Je pense qu'il y a juste une petite erreur de syntaxe mais je ne vois pas laquelle...!

Reply

Marsh Posté le 01-10-2007 à 02:05:52    

T'essaye de la récupérer comment :??:

Reply

Marsh Posté le 01-10-2007 à 09:46:12    

En PHP :  
$total= $_POST['total'];
 
Tout simplement...

Reply

Marsh Posté le 01-10-2007 à 10:32:26    

ledzep2 a écrit :


Code :
  1. var inputNode = document.createElement("input" );
  2. inputNode.setAttribute('type','hidden');
  3. inputNode.setAttribute('name',"total" );
  4. inputNode.setAttribute('value',Tab.length);




Tu testes avec quel IE? Parce qu'il y a bien un probléme avec des inputs + name en DOM sur IE, voir là:
http://www.easy-reader.net/archive [...] entations/

Reply

Marsh Posté le 01-10-2007 à 15:50:11    

Ma version c'est la 6.0.2900.
Cette page m'a appris deux trois trucs qu'il faut que je teste. Apparemment c'est quand même des méthodes de contournement, et c'est ça qui m'embête.
Faudrait trouver un spécialiste!
En tout cas merci du coup de main.

Reply

Marsh Posté le 01-10-2007 à 16:10:07    

ledzep2 a écrit :

Ma version c'est la 6.0.2900.
Cette page m'a appris deux trois trucs qu'il faut que je teste. Apparemment c'est quand même des méthodes de contournement, et c'est ça qui m'embête.
Faudrait trouver un spécialiste!
En tout cas merci du coup de main.


... je sais même pas que te repondre ... je vais retourner me spécialiser alors :(

Reply

Marsh Posté le 01-10-2007 à 16:17:50    

ledzep2 a écrit :

Ma version c'est la 6.0.2900.
Cette page m'a appris deux trois trucs qu'il faut que je teste. Apparemment c'est quand même des méthodes de contournement, et c'est ça qui m'embête.
Faudrait trouver un spécialiste!
En tout cas merci du coup de main.


nan mais il n'y pas le choix : IE ne gere pas les standards . A moins que tu neveuilles developper un patch pour IE ?

anapajari a écrit :


... je sais même pas que te repondre ... je vais retourner me spécialiser alors :(


 
tu reviendra quand tu connaitra un peu le js et le css

Spoiler :

grand maitre [:prosterne]

Reply

Marsh Posté le 01-10-2007 à 16:17:50   

Reply

Marsh Posté le 01-10-2007 à 23:21:34    

Ouais mais ça ne fait pas avancer le chmmilblik...

Reply

Marsh Posté le 02-10-2007 à 09:17:07    

quel chmmilblik?
Tu es tombé sur un problème implémentation DOM dans IE6 clairement identifié depuis plus de 2 ans. Si tu veux que ça marche, il faut obligatoirement utilisé des solutions de contournement [:spamafote]
 
Mais bon maintenant, un truc que je trouve pas forcement très malin, c'est la création de ton input "total" via DOM.
Clairement tu es sur de toujours en avoir besoin ( même s'il n'y a pas de lignes dans ton tableau), mets le directement dans ton html et set sa value dans ton init  
Ah, encore autre chose, il y a une methode DOM pour ajouter des lignes à un tableau, il serait peut-être bon de s'en servir.

Reply

Marsh Posté le 05-10-2007 à 19:14:07    

ledzep2 a écrit :

Ouais mais ça ne fait pas avancer le chmmilblik...


La soluce pour ceux que ça intéresse :

Code :
  1. tdNode = document.createElement("td" );
  2.   var chekNodeB = document.createElement('input');
  3.   chekNodeB.setAttribute('type','checkbox');
  4.   chekNodeB.id = "cfilm" + i;
  5.   chekNodeB.value = "1";
  6.   tdNode.className = 'td2';
  7.   tdNode.appendChild(chekNodeB);
  8.   trNode.appendChild(tdNode);


 
et
 

Code :
  1. var inputNode = document.createElement("input" );
  2. inputNode.setAttribute('type','hidden');
  3. inputNode.setAttribute('name',"total" );
  4. inputNode.setAttribute('value',Tab.length);
  5. document.body.appendChild(inputNode);


 
 
Vive FireBug!
Donc ça foncttionne impeccable sous firefox et alors sous ie 6 ou 7 keudale!
Je comprends pas...
 :fou:

Reply

Marsh Posté le 05-10-2007 à 21:23:09    

Mais on t'as dit que c'est tout au moins un bug de IE6, tu arriveras pas rajouter des éléments dans un formulaire et à les manipuler via DOM :spamafote:
 
Si tu peux plutot utiliser les fonctions propres aux tableaux c'est préférable et ça aussi ça t'a été dit!
 
C'est quoi qui marche, pas qu'est ce que tu essayes de faire :??:

Reply

Marsh Posté le 06-10-2007 à 11:23:44    

Beh alors si c'est un bug de IE6 pourquoi ça marche pas sur le 7 non plus?
C'est des fonctions propres que j'utilise pour le tableau.
Ce qui ne marche pas c'est que même pas le tableau ne s'affiche.
Donc à partir de là...

Reply

Marsh Posté le 06-10-2007 à 11:29:21    

Ah oui et autre chose firebug me montre la page générée, alors qu'avec ce foutu IE j epeux me brosser!!

Reply

Marsh Posté le 22-10-2007 à 17:29:04    

ledzep2 a écrit :

Beh alors si c'est un bug de IE6 pourquoi ça marche pas sur le 7 non plus?
C'est des fonctions propres que j'utilise pour le tableau.
Ce qui ne marche pas c'est que même pas le tableau ne s'affiche.
Donc à partir de là...


 
Bon alors la soluce finale qui marche parfaitement et pour tout c'était trés simple!!
On la trouvait là : http://msdn2.microsoft.com/en-us/l [...] spx#create
 
Je me disais que ça valait le coup d'en faire profiter quelques-uns!
Donc j'ai bien fait de persévérer et ne pas m'entéter!
 
Il faut, pour être clair, absolument déclarer le tbody pour IE sinon il est perdu.
 
Voilà espérons que ça en aide d'autres!
Merci à tous!  :jap:
 

Reply

Sujets relatifs:

Leave a Replay

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