Probleme javascript passage de parametre

Résolu/Fermé
stephane - 1 avril 2008 à 09:54
 zebarbu - 12 juil. 2010 à 14:13
Bonjour,

j'ai une application web a developez mais avant sa je m'exercais a javascript et je suis tombé sur un petit probleme que voici:

lorsque je fait dans un fichier

var a='bonjour';
si je fait : alert(a); la j'ai l'affichage de bonjour jusque la tout va bien.

si maintenant je fait:
window.setTimeout('alert(\'bonjour\');', 20);

(N.B: le 20 corresond a un parametre de setTimeout qui va executer alert dans 20milisecondes ici)
j'ai le meme resultat en entrant la chaine bonjour sans l'aide d'une variable donc pas de probleme


mais la stupeur si je fais ça:
var a='bonjour';
window.setTimeout('alert(a);', 20);

la aucun affichage c'est donc bien un probleme de lie a setTimeout ou peut etre tout simplement au passage de variable a une fonction dans un fonction?

est ce que vraiment quelqu'un aurait une reponse?

ps : je suis sous debian avec comme navigateur iceweasel (version libre du navigateur firefox)

merci d'avance pour vos reponses
A voir également:

5 réponses

slt !

avec setTimeout, pour le passage de paramètres :
setTimeout("mafonction("+param1+","+param2+")",millisec);

où param1 et 2 (suivant le nombre de paramètres évidemment) sont des variables simples (int, string, ...)
pour des paramètres plus compliqués tel que les objets javascript :
setTimeout(function () {mafonction (param1,param2);},millisec);


au plaisir
4
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 30
14 avril 2008 à 19:08
Salut stephane!

Je serais très très intéressée par ta solution car j'ai le même problème, mais je ne peux malheureusement pas passer mon paramètre sous forme de chaine de caractère.

As-tu trouvé un moyen?

Merci!


EDIT: Voilà, après quelques tâtonnements avec les double et simple quotes, on y arrive:

parametre='trucbidule';
window.setTimeout("fonction('"+parametre+"')",1000);


2
Utilisateur anonyme
1 avril 2008 à 13:08
Bonjour

alert(a) affiche le contenu de a
mais
dans

window.setTimeout('alert(a);', 20);

il ne doit pas considérer a comme une variable à cause de la syntaxe qui demande des guillemets.
alors que dans window.setTimeout('alert(\'bonjour\');', 20); on a une chaine de caractères.

sans certitude de ce que j'avance.
0
merci c'est bon
0
Utilisateur anonyme > stephane
1 avril 2008 à 14:07
quelle est la solution que tu as adoptée ?

il est bon que tu l'explicite et que tu mettes le problème en résolu.
merci pour la communauté.
0
window.setTimeout('alert(a);', 20);

=> Même si a contient bonjour, alert(bonjour) ne fonctionne pas, par contre alert('bonjour') fonctionne !

Il faut donc mettre

var a = 'bonjour';
window.setTimeout('alert(\'a\');', 20);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Non, car ça va afficher "a".
J'ai une solution de contournement:

var a = ""; //a est une variable globale

fonction_intermediaire
{
alert(a);
}

a="bonjour";
window.setTimeout(fonction_intermediaire, 20);
0