Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1125 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS] probleme simple de portée de variable[Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JS] probleme simple de portée de variable[Résolu]

n°1212985
benji_100
Posté le 02-10-2005 à 18:02:03  profilanswer
 

Bonjour,
 
j'ai un problème qui me ronge depuis 1heure !!
Voici le code :
 

Code :
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. function drawGrille(){
  5.  for (i=0 ; i<2 ; i++){
  6.   for (j=0 ; j < 3 ; j++){  //LIGNE QUI POSE PB
  7.    /*alert("hello" ); */
  8.    document.write("hello" );
  9.   }
  10.  }
  11.  alert('ok');
  12. }
  13. </script>
  14. </head>
  15. <body onLoad="drawGrille()">
  16. </body>
  17. </html>


 
Le code est super simple et je vois pas du tout d'où vient l'erreur !
Les symptomes :
Sous FireFox, la console me dit que 'j' n est pas définie à l'endroit indiqué plus haut.
Lorsque je me alert au lieu de document.write, ca marche parfairement !!
 
Help :roll:
 
benji

Message cité 1 fois
Message édité par benji_100 le 03-10-2005 à 17:41:51
mood
Publicité
Posté le 02-10-2005 à 18:02:03  profilanswer
 

n°1212986
plainsofpa​in
Pingouino's lover
Posté le 02-10-2005 à 18:03:40  profilanswer
 

Code :
  1. <script Language="JavaScript1.2">


 
C'est quoi ce truc de la préhistoire ?
 

Code :
  1. <script type="text/javascript">


 
Ca c'est beaucoup plus récent et aux normes :o


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
n°1212992
benji_100
Posté le 02-10-2005 à 18:09:27  profilanswer
 

... merci mais c est po ce que je demandais

n°1212996
plainsofpa​in
Pingouino's lover
Posté le 02-10-2005 à 18:19:33  profilanswer
 

ben, document.write, c'est plus valable non plus en fait :D
 
Sinon je ne voie pas ce qu'il y a avec ton j.  Essaie dans ta fonction de mettre un j=0; avant les boucles for. Parce que j'aime pas vraiment le js, donc je ne m'y connais pas trop, mais il accepte l'utilisation de variables sans déclaration ?


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
n°1213006
benji_100
Posté le 02-10-2005 à 18:24:59  profilanswer
 

J'ai essayé et comme je le pensais ca change rien car en effet js accepte l utilisation sans declaration mais avec initialisation, ce qui a été fait dans la boucle for.
J'aime pas vraiment js non plus ca fait toujours des erreurs a 2 balles *soupire*
^^


Message édité par benji_100 le 02-10-2005 à 18:25:33
n°1213067
benji_100
Posté le 02-10-2005 à 20:01:24  profilanswer
 

un chti up :)
Personne n'a un début d'idée sérieusement?

n°1213192
afbilou
pouet your life
Posté le 02-10-2005 à 22:21:57  profilanswer
 

Tu veux que ca fasse koi ton code ?
que ca ecrive hello dans ta page ?
parce que comme le code est ecris ca va ecrire hello dans le head donc ca risque pas de marcher.

n°1213194
masklinn
í dag viðrar vel til loftárása
Posté le 02-10-2005 à 22:25:59  profilanswer
 

benji_100 a écrit :

Bonjour,
 
j'ai un problème qui me ronge depuis 1heure !!
Voici le code :
 

Code :
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. function drawGrille(){
  5.  for (i=0 ; i<2 ; i++){
  6.   for (j=0 ; j < 3 ; j++){  //LIGNE QUI POSE PB
  7.    /*alert("hello" ); */
  8.    document.write("hello" );
  9.   }
  10.  }
  11.  alert('ok');
  12. }
  13. </script>
  14. </head>
  15. <body onLoad="drawGrille()">
  16. </body>
  17. </html>


 
Le code est super simple et je vois pas du tout d'où vient l'erreur !
Les symptomes :
Sous FireFox, la console me dit que 'j' n est pas définie à l'endroit indiqué plus haut.
Lorsque je me alert au lieu de document.write, ca marche parfairement !!
 
Help :roll:
 
benji


[:petrus75]
 
Remplace 'i=0' et 'j=0' par 'var i=0' et 'var j=0' [:petrus75]
 
Et je vois pas le rapport avec la portée des variables [:petrus75]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1213195
afbilou
pouet your life
Posté le 02-10-2005 à 22:28:12  profilanswer
 

dans les attributs de body et non pas dans le <head> ... ecris trop vite.
 
c'est

Code :
  1. <body>
  2.  <script type="text/javascript">
  3.   drawGrille();
  4.  </script>
  5. </body>


que tu cherches a faire.
 
Je ne te donnerai pas la vraie solution bien propre et d'actualite pour faire cela ... car ca ne t'interressera pas ... :)

n°1213198
benji_100
Posté le 02-10-2005 à 22:32:58  profilanswer
 

Non Masklin ca marche pas j ai deja essayé, pourtant je vois pas du tout (mais alors du tout) pourquoi un code si simple passe pas, alors que plein d autres plus compliqué passent sans soucis... Je parle de portée de variable car le "i" de la premiere boucle for ne pose pas de pb, alors que le "j" de la deuxieme n est pas reconnue ("j undefined" )
 
afbilou, ce que je veux c'est que ca me fasse pas d erreur !!!
 
Essayez le faire tourner le code, en tout cas chez moi sous FF et IE ca passe pas.
 
Le plus bizarre c est que (je me repete) :
avec le alert, ca marche,
avec le document.write, ca passe pas ("j" undefined)
 
incomprehensible comme message d erreur...

mood
Publicité
Posté le 02-10-2005 à 22:32:58  profilanswer
 

n°1213201
benji_100
Posté le 02-10-2005 à 22:35:26  profilanswer
 

Sisisisi ca m interresse !!! afbilou, si ca te derange pas de prendre qq secondes pour m expliquer ta methode, je ten serai reconnaissant :):):)

n°1213306
benji_100
Posté le 03-10-2005 à 09:15:26  profilanswer
 

Citation :

dans les attributs de body et non pas dans le <head> ... ecris trop vite.  
 
c'est  
 
 
Code :
 
<body>  
        <script type="text/javascript">  
            drawGrille();  
        </script>  
    </body>
 
 
 
que tu cherches a faire.  
 
Je ne te donnerai pas la vraie solution bien propre et d'actualite pour faire cela ... car ca ne t'interressera pas ...  


 
Afbilou mercii mercii merciiiii et merci!!! En effet c etait ca le pb , je place mal le code !! J avais pas percuté que JS ecrivait la ou etait le script.
(rires et moqueries, je sais)
 
Sinon fais nous profiter de ta solution !! En fait la je m entraine a ce language petit mais costaud.(le livre O reilly est tout pti !! - version precis et concis mais tres bien fait pour ceux qui connaissent C C++ et/ou Java)
 
Encore merci!

n°1213416
gatsusat
Posté le 03-10-2005 à 11:13:23  profilanswer
 

de toute manière le Javascript ca ne se met pas dans BODY,ca se met soit dans head, soit dans une page a part, ya des normes faut les respecter

n°1213721
benji_100
Posté le 03-10-2005 à 16:03:13  profilanswer
 

Bah !
Je dis LOl quoi...
Faut accorder vos violons les gars...
Qui a raison ?

n°1213723
masklinn
í dag viðrar vel til loftárása
Posté le 03-10-2005 à 16:05:19  profilanswer
 

On va faire simple:
 
document.write, c'est le mal
 
En dehors de document.write, il n'est jamais nécessaire de mettre du javascript dans le body, donc le javascript dans <body> c'est le mal.
 
Donc le javascript va dans le <head> ou, encore mieux, dans un fichier externe.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1213736
benji_100
Posté le 03-10-2005 à 16:13:34  profilanswer
 

Ok merci Masklin je retiendrai.
 
Autre question rapide : les fonctions ont elles accès aux variables globales en JS ? Autrement, est ce qu il faut déclarer ou passer en parametre toutes les variables dont on aura besoin dans le corps de la fonction?
 
PS : marrant ton disclaimer Mask:)

n°1213751
masklinn
í dag viðrar vel til loftárása
Posté le 03-10-2005 à 16:20:26  profilanswer
 

benji_100 a écrit :

Autre question rapide : les fonctions ont elles accès aux variables globales en JS ? Autrement, est ce qu il faut déclarer ou passer en parametre toutes les variables dont on aura besoin dans le corps de la fonction?


Oui, une fonction a accès à toutes les données des scopes supérieures.
 
Ca permet d'ailleurs (avec quelques mécanismes supplémentaires, parce que simplement la gestion des scopes c'est grandement insuffisant) de générer ce qu'on appelle des closures:
 

function foo(a) {
    function bar(b) {
        return doSomething(a)+doSomethingElse(b);
    }
    return bar;
}


Ici, le "bar" retourné va conserver le "a" présent dans "foo" lorsqu'elle a été créée.
 
Donc appeler foo(15) va générer la fonction

function bar(b){
    return doSomething(15)+doSomethingElse(b);    
}


[:dawa]

benji_100 a écrit :

PS : marrant ton disclaimer Mask:)


Même si il est faux et que les CSS sont à refaire (genre histoire d'arrêter de rendre les gens aveugles quand ils ouvrent la page [:mr mala] )


Message édité par masklinn le 03-10-2005 à 16:21:44

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1213780
benji_100
Posté le 03-10-2005 à 16:45:10  profilanswer
 

Hahaha
merci encore.
Bon ben j ai un pb avec mon script. Trop bizarre : au premier passage dans la fonction, il ne fait pas d erreur, au second, il ne reconnait plus une varible globale (mais les autres variables globales utilisées dans la fonctions sont toujours bien reconnues).
Comprend pas.
Je creuse et si vraiment je bloque je reposte.
 
Tx All :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS] probleme simple de portée de variable[Résolu]

 

Sujets relatifs
Problème de style....probleme while et <select>
Problème eval sur un nom de fonctionActionScript -> Problème d'envoi de fonction sur évenement
[java] problème de socketProblème pour centrer une image chargée dynamiquement
[résolu] Faire cohabiter une ID et un classe dans la même balise ???appeler méthode de classe-mère [résolu]
(Résolu) - Caractères acceptés dans un champ par MySQL[resolu par hasattr()]comment savoir si une variable existe ?
Plus de sujets relatifs à : [JS] probleme simple de portée de variable[Résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR