Javascript, entre 2 'function'

Résolu/Fermé
linuxakros Messages postés 114 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 15 octobre 2008 - 27 mai 2008 à 08:57
linuxakros Messages postés 114 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 15 octobre 2008 - 27 mai 2008 à 09:32
Bonjour à tous,
J'ai un petit soucis de javascript. J'ai 2 fonctions:

function premiere(id) {
var test = id;
if (test == "1")
{
var msg="bla1";
}
if (test == "2")
{
var msg="bla2";
}
...
..
.
}
function deuxieme(){
document.getElementById('madiv').innerHTML= msg;
}

et dans body
<a href="#" onclick="premiere('1');">1</a> - <a href="#" onclick="premiere('2');">2</a>
<div id="madiv"></div>

Le problème est que je n'arrive pas à avoir ce qu'il faut dans msg pour la 2ème fonction.
Ps: Si je mets var msg="bla3"; en dehors de la 1ère fonction, le message s'affiche bien pour bla3.

Comment faire la liaison entre les 2 fonctions ?


Merci de votre aide et bonne journée.
A voir également:

3 réponses

GallyNet Messages postés 434 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 15 décembre 2008 386
27 mai 2008 à 09:04
Le mot clé "var" créer une variable en local, elle n'existe qu'entre les { } dans lesquel elle a été définit. Dans ton cas, la variable msg n'existe que dans les if :
// msg n'existe pas
if (test == "1")
{
var msg="bla1";
// msg existe
} 
// msg n'existe plus

Il te faut donc faire en sorte que la variable soit "global". En javascript, ça revient à ne jamais mettre de "var" devant, ou de la définir en dehors de tout code :
var test;
function premiere(id) { 
  msg = 'test';
  ...
}
function deuxieme(){
  document.getElementById('madiv').innerHTML= msg;
}
1
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
27 mai 2008 à 09:04
Bonjour.

function premiere(id) {
var test = id;
if (test == "1")
{
var msg="bla1";
}
if (test == "2")
{
var msg="bla2";
}
...
..
.
deuxieme (msg);
}
function deuxieme(texte){
document.getElementById('madiv').innerHTML= texte;
}

Tu dois appeler la fonction deuxieme à partir de ta fonction premiere, sinon tu n'exécute que la fonction premiere !
Et, pour éviter des éventuels conflits de variables, utilise des noms de variables bien différenciés...
0
linuxakros Messages postés 114 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 15 octobre 2008 19
27 mai 2008 à 09:32
Merci de vos réponses GallyNet et macgawel.

J'ai essayé celle de GallyNet et ça fonctionne parfaitement.

Merci de vos aides et bonne journée !
0