lamatrice> oui mais c un comportement par defaut de l'intrepreteur javascript.
Pour moi speeder06, disait d'enlever le "var" devant le var i qui etait ecrit en dehors d'un code de fontion.
Mais y a pas de mal, je voulais d'ailleurs savoir ou cela pouvait etre ecrit afin de regarder excatement ce qu'il voulait dire ...
wouatouwouatou> ca y est speeder06 a pondu une solution assez nickel
wouatouwouatou
nabab a écrit a écrit :
Ben wouatouwouatou je lui ai proposé et il dit que cela ne change rien.
mais son initialisation comme jai dit est pas bon...
il a surement initialisé avec document.blabla...
duch
oui
lamatrice
nabab, ce que voulait dire speeder06, c'est que
Dans une fonction, si tu défini un variable sans utiliser le mot var, elle est automatiquement variable globale, ce qui revient au même que de l'avoir définit en dehors de cette fonction.
si je me trompe ?
speeder06
Excuse pour cette info, non correcte.
J ai confondu avec autre chose
Desolee
lamatrice
voila une réponse qui a le mérite d'être claire.
merci !
nabab
speeder06> Mets d'ou tiens tu cette information, le mot var n'est qu'une methode de declaration, methode propore à chaque langage, cela n'a jamais eu un qq conque rapport avec la definition de varaibles globales. simplement il est certain qu'il ne faut l'utiliser qu'une seule fois pour une variable car sinon cela revient est de la double declaration. C tres simple comme te l'a dit precedemment wouatouwouatou tu l'initialise avec une valuer qui n'existe pas encore lors de la lecture de page par le navigateur
speeder06
lamatrice a écrit a écrit :
bon alors précisons
je reprends mon bout de code pour être claire
var mailchain,maillong,test; mailchain=document.formu.mail.value ; maillong=mailchain.length ; test="toto"
function testmail() { alert("votre mail fait " +test+ " caractères" ); }
ce code fonctionne avec la variable test
mais si dans mon alert je remplace test par maillong, il me dis "indéfini" ?
par contre si je met l'affectation de mailong et de mailchain dans la funcion là il prend le fils de p....
bon voilà je suis content de ne pas être un imbécile .
Dans ce cas c est tout a fait normal.
Le fonctionnement est le suivant :
La page HTML est interprete pas le navigateur.
Donc ds le tag JAVACSRIPT, tout ce qui n est pas fonction javascript est execute.
Donc :
mailchain=document.formu.mail.value ; maillong=mailchain.length ; est execute. Mais bien sur au debut, ta variable mail est pas definie, puisque ton tag input est definie apres.
Si tu veux pas l affichage "undefined" il faut que tu mettes ton tag JAVASCRIPT apres le tag INPUT.
Mais ca ne marchera toujours pas puisque, a chaque fois, qui tu vas executer ta fonction, la chaine maillong aura la valeur, a l interpretation de la page (cad vide);
Donc tu es oblige de la mettre ds ta fonction :
var mailchain,maillong,test; mailchain=document.formu.mail.value ; maillong=mailchain.length ; test="toto"
function testmail() { alert("votre mail fait " +test+ " caractères" ); }
ce code fonctionne avec la variable test
mais si dans mon alert je remplace test par maillong, il me dis "indéfini" ?
par contre si je met l'affectation de mailong et de mailchain dans la funcion là il prend le fils de p....
bon voilà je suis content de ne pas être un imbécile .
speeder06
lamatrice a écrit a écrit :
dans une fonction, si j'utilise une variable qui a été défini en dehors de la fonction, ça marche plus,
var i;
function toc() {
if (i=="5" ) {
machin bidule }
dans mon exemple la variable i est à l'exterieur de la fonction. quant j'appel toc() il ne connait pas i
y a t'il un moyen de definir la variable pour quelle puisse tourner sur toute les futur fuctions
Hi,
Il faut que tu enleves le "var" devant "i", si tu veux que ta variable soit global.
@+
Bonne suite
nabab
Ben wouatouwouatou je lui ai proposé et il dit que cela ne change rien.
wouatouwouatou
c ptet paske ton script tu le fais au debut...
et donc document.blabla ... bah i connait pas encore.. enfin, jsuis pas sur mais regarde de ce cote la...
Met des valeur fixe pour tester... du genre variable="toto" et appelle ta fonction.
lamatrice
j'ai IE5 et quand je la met dans la fonction ça marche ? c'est spéc hein!
nabab
oui car les variables globales c ce que tu fais, il suffit de les declarer en dehors des fonctions ... c assez aisé ..
darkoli
ben la tu vois si ton javascript ne marche pas c'est pas normal. (c'est quoi le naviguateur) ?
petoulachi
Bin je connais rien en javascript, mais peut etre faut il que tu declare tes variables en globales.... enfin dans bcp de langage c comme ça alors regarde voir si ya pas un truc du genre
lamatrice
ça change rien, p't être que je con ! voila un exemple de code (qui test la longueur d'une adresse mail)
var mailchain,maillong;
mailchain=document.formu.mail.value ;
maillong=mailchain.length ;
function testmail() {
alert("votre mail fait " +maillong+ " caractères" );
}
nabab
mets var i = "";
lamatrice
merci pour ton aide, mais je comprends pas ta réponse !
tu veux pas être plus claire dans ce que je dois faire pour que ma variable i soit accessible dans chaque fonction.
nabab
normalement cela devrait marcher mais le probleme est que tu n'initialise pas ta variable donc pour l'instant je crois que son type est undefined que tu peux tester par la methode typeof
lamatrice
dans une fonction, si j'utilise une variable qui a été défini en dehors de la fonction, ça marche plus,
var i;
function toc() {
if (i=="5" ) {
machin bidule }
dans mon exemple la variable i est à l'exterieur de la fonction. quant j'appel toc() il ne connait pas i
y a t'il un moyen de definir la variable pour quelle puisse tourner sur toute les futur fuctions