Passer un nom de fonction en dynamique
1/ Ce qui fonctionne :
j'ai créé des éléments "div" qui, au click, lancent une fonction :
Code:
monDiv.onclick = function() {click_lecon(bloc, index)};
Le nom de la fonction est : click_leçon et les paramètres sont bloc et index.
Cela fonctionne très bien.
Ce qui pose problème :
j'ai créé une table qui stocke mes objets MenuNav, chacun ayant trois valeurs :
Code:
1 2 3 4 5 6 7
| export let MenuNav = class MenuNav {
constructor (msg, img, action) {
this.msg = msg;
this.img = img;
this.action = action;
}
} |
Code:
1 2 3 4
| export let table_Nav = [];
table_Nav[0] = new MenuNav ("Fermer la fiche", "images/img30/croixRouge.png", "init()");
table_Nav[1] = new MenuNav ("voir la leçon suivante", "images/img30/croixRouge.png", "next()");
table_Nav[2] = new MenuNav ("voir la leçon précédente", "images/img30/croixRouge.png", "back()"); |
Je construis ensuite, grâce à la boucle foreach, mes trois div, en leur affectant les valeurs de chaque objets de la table.
La problématique est la suivante :
comment faire pour que le onclick, comprenne que l'élément el.action est une fonction dont le nom est :
init() à la construction du premier div.
next() à construction du deuxième.
back() à la construction du troisième.
Mon code actuel n'est pas reconnu :
Code:
navigation1.onclick = function() {(el.action)};
si je mets en clair le nom de chaque fonction sur le onclick, cela fonctionne, mais l'intérêt, c'est l'affectation automatique par programmation.
Merci à ceux qui sont affutés dans la syntaxe et qui pourront me donner des idées!....