[Resolu] string.lenght qui marche une fois sur deux

string.lenght qui marche une fois sur deux [Resolu] - Flash/ActionScript - Programmation

Marsh Posté le 02-06-2006 à 16:45:37    

Salut la communaute,
 
J'ai un soucis tres etrange par rapport a la "methode" lenght afin de recuperer la taille d'une chaine de caractere. En effet je suis entrain de faire une anim flash qui charge un fichier xml dans le but d'en extraire le contenu pour l'afficher dans un joli tableau en flash. Je dois donc recuperer la longueur max de chaque chaine pour chaque colonne afin d'ajuster la largeur en consequence.
 
Voila mon bout de code a probleme:

Code :
  1. for(var j=0; j<_root.nbcol; j++){
  2.  words[j+1] = main_node.childNodes[0].childNodes[j].nodeName;
  3.  trace(words[j+1].length); // CA MARCHE
  4. }
  5. var ind;
  6. for(var i = 0; i<_root.nbligne-1; i++){
  7.  for(var j= 0; j<_root.nbcol; j++){
  8.   ind = (i+1)*_root.nbcol+(j+1);
  9.   words[ind] = main_node.childNodes[i].childNodes[j].firstChild;
  10.   trace(words[ind]); // CA MARCHE
  11.   trace(words[ind].length); // CA NE MARCHE PAS (undefined)
  12.  }
  13. }


Auriez vous une petite idee de pourquoi ca marche bien dans la premiere boucle for et pas dans la seconde?
 
A mon avis je suis tombe sur un bug tellement ca me semble louche. ENfin si vous en savez plus merci d'avance.
 
Ciao


Message édité par totokick le 02-06-2006 à 17:28:36
Reply

Marsh Posté le 02-06-2006 à 16:45:37   

Reply

Marsh Posté le 02-06-2006 à 17:28:11    

Re,
 
Finalement je me suis debrouiller seul, avec une methode crade. Vu que ca marchait pas le length. Je me suis fais un textfield dynamic provisoir sur la scene mais en dehors du cadre d'affichage. Avec ce textfield je lui assigne la valeur du firstChild et je recupere la longueur de ce textfield par la suite en mettant les longueurs dans un autre tableau.
 
Merci pour ceux qui m'ont lu.

Reply

Marsh Posté le 03-06-2006 à 14:11:12    

Tss tss tss tss ....

Code :
  1. words[j+1] = main_node.childNodes[0].childNodes[j].nodeName;
  2. trace(words[j+1].length); // CA MARCHE


Bien sûr que ça marche: nodeName est un String ...
 

Code :
  1. words[ind] = main_node.childNodes[i].childNodes[j].firstChild;
  2. trace(words[ind].length); // CA NE MARCHE PAS (undefined)


Bien sûr que ça ne marche pas : firstChild est un XMLNode !!!
 

Code :
  1. words[ind] = main_node.childNodes[i].childNodes[j].firstChild.nodeValue;


Message édité par Mr Mala le 07-06-2006 à 13:05:08
Reply

Marsh Posté le 08-06-2006 à 16:01:33    

Effectivement Mala, avec .nodeValue a la fin ca fonctionne.
 
Ce qui fonctionne aussi, que j'avais fais mais que j'ai vire ducoup, c'est d'assigner a un textfield dynamique un XMLNode (.firstChild) et ca marche aussi, ca ecrit la valeur du nodeValue a l'interieur.
 
Space...

Reply

Marsh Posté le 08-06-2006 à 16:43:15    

je vois pas ce qui est space, c'est un comportement normal

Reply

Marsh Posté le 08-06-2006 à 16:52:29    

Très probablement que quand tu faisais passer ton XMLNode vers ton textfield, il appellait implicitement la fonction toString() ...

Reply

Sujets relatifs:

Leave a Replay

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