IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Undefined qui est "defined"


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    116
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 116
    Par d�faut Undefined qui est "defined"
    Bonjour � tous,

    Je dois r�aliser un projet en javascript or j'ai une erreur qui me bloque.
    On me dit que mon tableau nomm� global n'est pas d�fini quand je l'appelle dans une fonction.
    Vous auriez une id�e ??

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    var global = new Array();
    var nbCase = window.prompt("Entrez le nombre de cases que vous voulez pour votre tableau");
    var test=nbCase*nbCase;
     
    	function TBL_virtuel() {
    		for (var x=0; x<nbCase; x++) {
    			global[x] = new Array();
    			for (var y=0; y<nbCase; y++) {
     
    					global[x][y]="vide"; 
    			}	
    		}
    		return global;
    	}
     
    		function afficher()
    	{
    		var p=0;
    		var coef=0.80;
    		var nombreAs = nbCase*coef;
    		var cellules = document.getElementsByTagName('td');
    		for (var x=0; x<nbCase; x++) {
    			for (var y=0; y<nbCase; y++) {
    				calcul_place_A(global);
    				calcul_place_B();
    			}
    		}
    	}
     
    	function calcul_place_A () {
    		var p=0;
    		var nombreAs = test/8.1;
    		Math.round(nombreAs);
    			do {
    				var aleatoire = Math.random();
    				var aleatoi = Math.random();
    				var placeX = Math.round(aleatoire * nbCase);
    				var placeY = Math.round(aleatoi * nbCase);
    				if ((placeX>0) && (placeX<=nbCase) && (placeY>0) && (placeY<=nbCase)) {
    				global[placeX][placeY]="As";
    				alert (global[placeX][placeY]);
    				}
     
    				p++;
    			} while (p<nombreAs);
    		//document.write(global);
    		return global;
    	}
     
     
    	function calcul_place_B () {
     
    			if ((x>0)&&(y>0)&&(global[x-1][y-1]!="As"))
    				{
    					global[x-1][y-1]++;
    				}
     
    				if ((x>0)&&(y>0)&&(global[x][y-1]!="As"))
    				{
    					global[x][y-1]++;
    				}
     
    				if ((x<nbCase-1)&&(y>0)&&(global[x+1][y-1]!="As"))
    				{
    					global[x+1][y-1]++;
    				}
     
    				if ((x>0)&&(y>0)&&(global[x-1][y]!="As"))
    				{
    					global[x-1][y]++;
    				}
     
    				if ((x>0)&&(y>0)&&( global[x][y]!="As"))
    				{
    					global[x][y]++;
    				}
     
    				if ((x<nbCase-1)&&(y>0)&&(global[x+1][y]!="As"))
    				{
    					global[x+1][y]++;
    				}
     
    				if ((x>0)&&(y<nbCase-1)&&(global[x-1][y+1]!="As"))
    				{
    					global[x-1][y+1]++;vivant++;
    				}
     
    				if ((x>0)&&(y<nbCase-1)&&(global[x][y+1]!="As"))
    				{
    					global[x][y+1]++;
    				}
     
    				if ((x<nbCase-1)&&(y<nbCase-1)&&(global[x+1][y+1]!="As"))
    				{
    					global[x+1][y+1]++;
    				}
     
     
    	document.write(global);
    	}

  2. #2
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Bonjour,
    comme ton Array "global" est d�clar� en variable .... globale ( ), il faut enlever les "return global;" � la fin de tes fonctions ...
    De plus ces return ne sont visiblement pas "attendus" par la fonction appelante.
    Ne le passe pas en param�tre : c'est une variable globale (donc visible de toutes les fonctions).

    De plus, bien que pas tout � fait compris le but de ton script, tu ne confondrais pas Array et <table> ?

    Et que comptes-tu obtenir avec sachant que global[x-1][y-1] contient du caract�re ?

    A+

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    116
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 116
    Par d�faut
    Merci de ton aide mais j'ai toujours cette erreur dans firefox "global[placeX] is undefined"

    Pour le tableau global[placeX] j'avais oublier que mon tableau avait vide par d�faut...

    en ce qui concerne le code, il doit me servir de base pour faire un d�mineur, sachant que pour le moment rien n'est affich� en html, l'appel au dom se fera en dernier.

  4. #4
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Citation Envoy� par rollergirl Voir le message
    Merci de ton aide mais j'ai toujours cette erreur dans firefox "global[placeX] is undefined"
    Essaye
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var placeX = Math.round(aleatoire * parseInt(nbCase, 10));
    car nbCase est du string � l'origine (prompt() ).

    En respectant bien s�r les conseils d'Auteur pour les d�clarations

    A+

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    116
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 116
    Par d�faut
    Je viens de tester en changeant avec parsint mais sa m'affiche toujour la m�me erreur... :/

    La fonction parsint sert bien � lui dire que le pront saisie est un chiffre mais a quoi sert le 10 ?

    Pour la d�claration des varaibles c'est mieux ainsi ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    	function calcul_place_A () {
     
    	// Déclaration des variables utiliser pour cette fonction
    		var aleatoire;
    		var aleatoi;
    		var placeX;
    		var placeY;
    		var p=0;
    		var nombreAs = test/8.1;
    		Math.round(nombreAs);
    			do {
    				aleatoire = Math.random();
    				aleatoi = Math.random();
    				placeX = Math.round(aleatoire * parseInt(nbCase, 10));
    				placeY = Math.round(aleatoi * parseInt(nbCase, 10));
    				if ((placeX>0) && (placeX<=nbCase) && (placeY>0) && (placeY<=nbCase)) {
    				global[placeX][placeY]="A";
    				//alert (global[placeX][placeY]);
    				}
     
    				p++;
    			} while (p<nombreAs);
     
    	}

  6. #6
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Citation Envoy� par rollergirl Voir le message
    Je viens de tester en changeant avec parsint mais sa m'affiche toujour la m�me erreur... :/
    Tu as essay� de chang� le nom de ton Array (sait-on jamais) ?

    Citation Envoy� par rollergirl Voir le message
    La fonction parsint sert bien � lui dire que le pront saisie est un chiffre mais a quoi sert le 10 ?
    C'est pour indiquer une conversion en base 10. Sans �a un bug de la fonction fait que certaines valeurs sont converties dans une autre base (hexa, octale ...) en fonction du 1� caract�re de la valeur � convertir. Il y a un thread sur ce probl�me je crois ...

    Citation Envoy� par rollergirl Voir le message
    Pour la d�claration des varaibles c'est mieux ainsi ?


    A+

  7. #7
    Expert confirm�
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par d�faut
    bonjour,

    - d�j� tu peux supprimer les return global dans la mesure o� ton tableau est une variable globale (en plus dans ton code tu ne r�cup�res pas ce que retourne les fonctions).

    - dans ta fonction afficher() :
    supprime le param�tre car d'apr�s sa d�finition, calcul_place_A() n'a pas de param�tres

    - pour faire du d�bogage, utilise plut�t alert() ou innerHTML sur un �l�ment pr�sent dans ta page :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    document.getElementById("idElement").innerHTML = global
    banni le document.write() !!


    Ensuite :
    1- A quoi sert ce code ?
    2- comment sont appel�es les diff�rentes fonctions (�v�nements qui les appellent, dans quel ordre sont-elles ex�cut�es) ?
    3- Perds l'habitude de d�clarer tes variables dans des boucles, le programme perd de sa clart� et �a me donne des boutons ces de d�clarations variables qui se baladent � droite et � gauche. D�clare tes variables au d�but de tes fonctions, tu gagneras en lisibilit� et sans doute en performance.


    [edit]

    E.Bzz : nos messages se sont crois�s

    [/edit]

  8. #8
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Citation Envoy� par Auteur Voir le message
    E.Bzz : nos messages se sont crois�s
    J'ai failli crier au plagiat

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo