Posez votre question Signaler

Debuggage JavaScript

Snake - Dernière réponse le 24 nov. 2003 à 21:12
Salut,

J'ai un problème en JavaScript que je n'arrive pas à résoudre. Voici mon code, très simple...

<script language="JavaScript1.3">

// Variables globales ---------------------
var alpha = new Array(2);
var prog = new Array(15,4);
//-----------------------------------------


// Affectation des valeurs ----------------
alpha[0] = " ";
alpha[1] = "I";
prog[0][0] = "q0"; prog[0][1] = "I"; prog[0][2] = " "; prog[0][3] = "q1";
prog[1][0] = "q1"; prog[1][1] = " "; prog[1][2] = ">"; prog[1][3] = "q2";
// la ligne qui pose problème est visiblement la suivante
prog[2][0] = "q2"; prog[2][1] = "I"; prog[2][2] = ">"; prog[2][3] = "q2";
prog[3][0] = "q2"; prog[3][1] = " "; prog[3][2] = ">"; prog[3][3] = "q3";
prog[4][0] = "q3"; prog[4][1] = "I"; prog[4][2] = ">"; prog[4][3] = "q3";
prog[5][0] = "q3"; prog[5][1] = " "; prog[5][2] = "I"; prog[5][3] = "q4";
prog[6][0] = "q4"; prog[6][1] = "I"; prog[6][2] = ">"; prog[6][3] = "q5";
prog[7][0] = "q5"; prog[7][1] = " "; prog[7][2] = "I"; prog[7][3] = "q6";
prog[8][0] = "q6"; prog[8][1] = "I"; prog[8][2] = "<"; prog[8][3] = "q6";
prog[9][0] = "q6"; prog[9][1] = " "; prog[9][2] = "<"; prog[9][3] = "q7";
prog[10][0] = "q7"; prog[10][1] = " "; prog[10][2] = ">"; prog[10][3] = "q9";
prog[11][0] = "q7"; prog[11][1] = "I"; prog[11][2] = "<"; prog[11][3] = "q8";
prog[12][0] = "q8"; prog[12][1] = "I"; prog[12][2] = "<"; prog[12][3] = "q8";
prog[13][0] = "q8"; prog[13][1] = " "; prog[13][2] = ">"; prog[13][3] = "q0";
prog[14][0] = "q9"; prog[14][1] = " "; prog[14][2] = ">"; prog[14][3] = "q10";
//-----------------------------------------

</script>


Là j'ai une erreur qui me dit "'prog.2' a la valeur NULL ou n'est pas un objet". Et là je bloque. Si quelqu'un a une idée pour résoudre le souci...

Merci d'avance,
A+
Lire la suite 

Debuggage JavaScript »

Suggestions
3 réponses
Réponse
+1
moins plus
En JS, l'instruction :
var prog = new Array(15,4) ;

crée un tableau unidimensionnel à 2 éléments contenant les valeurs 15 et 4.
Dans ton cas, il convient de faire, par exemple :
1ère solution :
var prog = new Array() ;
   for ( i  0 ; i < 15 ; i++ ) {
      prog[i] = new Array() ; // ou new Array(4) ;
   }

puis coder les affectations.
2ème solution :
var prog = new Array() ;
       prog[0]  = new Array("q0","I"," ","q1") ;
       prog[1] = new Array("q1"," ",">","q2") ;
       ..........
       prog[14]  new Array("q9"," ",">","q10") ;
Ajouter un commentaire
Réponse
+0
moins plus
Bsr Snnnnnnnnnnnnaaaaaaaaaaaaake,

tssss, tssss ben vi c'est normal !

Lorsque tu déclares var prog = new Array(15,4); tu ne déclares pas un tableau à 2 dimensions 15x4 mais un tableau avec 2 éléments : 15 et 4
C'est comme si tu écrivais :
var prog = new Array(2);
prog[0]=15;
prog[1]=2;

En fait si tu indiques autre chose qu'un simple chiffre JS affecte directement les valeurs dans un tableau monodimensionnel.

Donc forcement dès que tu utilises un index supérieur à 1 ça plante !

Ze solution :

var prog = new Array(15);
for (i=0; i< prog.length; i++) prog[i]=new Array(4);


En prime une petite fonction super utile que j'ai trouvé dans la doc JavaScript Netscape pour voir le contenu d'un objet (je l'utilise tout le temps) :

function show_props(obj, objName)
{
var result = ""
for (var i in obj)
{
result += objName + "." + i + " = " + obj[i] + "\n"
}
return result
}



Essai
alert(show_props(prog,"prog"));

après tes initialisations tu verras c'est magique pour le débogage !


Heu évite qd même des choses comme :

alert(show_props(document,"document")); ;-)

@+



PhP    [Push the button,Don't push the
.         button,Trip the station,Change the channel]
Ajouter un commentaire
Réponse
+0
moins plus
Hello,

Super merci, ça marche nickel. Le temps de bouffer et j'ai ma réponse... vive le net ! : )

En fait il me semblait que le new Array(15)(4) ne créait un tableau à 2 éléments qu'en JavaScript1.2, mais pas en 1.1 ni en 1.3.

Je ne sais pas où j'ai vu ça mais ça devait être une connerie.

Bon en tout cas merci.
A+
Ajouter un commentaire
Ce document intitulé « Debuggage JavaScript » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook