11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai une fonction à appeler dont le nom change en fonction d'un lien cliqué.
Suite à une recherche rapide, j'ai trouvé une technique simple qui a l'air de pas trop mal marcher :
window[functionName_string]();

La fonction est bien retrouvée mais mon soucis c'est qu'elle ne se lance pas...
Voici le bout de code incriminé :
function test(message,callBack_function) 
{ 
	alert(message+" "+callBack_function);
	window[callBack_function]();
	return;
}

function recap()
{
	alert("fonction recap appelée");
}

test("toto",recap);

J'obtiens bien l'alerte correspondante de ce type :
a écrit :
toto function recap() {
alert("recap");
}

mais je n'obtiens pas l'alerte
a écrit :
fonction recap appelée

Quelqu'un aurait une idée de comment remédier à ce problème?

Merci beaucoup,
Cyril
Modifié par wazzzzza (31 Jan 2011 - 14:38)
retour rapide :
il s'agit d'un oubli de guillemets lors de l'appel de la fonction test() :
il fallait écrire :
test("toto","recap");

et non
test("toto",recap);

désolé pour le dérangement...
Salut,

Le code donné fonctionne très bien.
Il doit y avoir un une erreur autre part car ce que tu dit recevoir ne correspond pas. La première alert affiche juste
a écrit :
toto recap


Tu peux aussi envoyer direcement la fonction en paramètre, ça évite de passé par un String.

function test(message,callback)  
{  
    alert(message+" "+callback.name); 
    callback();
} 
 
function recap() 
{ 
    alert("fonction recap appelée"); 
} 
 
test("toto",recap); //ne pas mettre de parenthèse à recap sinon callback sera le retour de la fonction -> undefined