c'est la chose la plus étrange. Mon code est ci-dessous:Javascript variable de fonction devient soudainement indéfini?
function menuSwipe(init){
dojo.query('div.fill div.container div.menu div.group ul').forEach(function(item){
dojo.fx.wipeOut({
node: item,
duration: 1
}).play();
dojo.query('li', item).forEach(function(childrenItem){
if (dojo.hasClass(childrenItem, 'active'))
childrenItem.parentNode.className = 'items active';
});
if (item.className == 'items active') {
dojo.query('div.category', item.parentNode).forEach(function(parentItem){
setTimeout(function(){
menuOpen(parentItem, init);
doGrayscale(parentItem);
}, 100);
});
}
});
}
Fondamentalement init
reste en mémoire jusqu'à ce qu'il passe dans le cas (item.className == 'items active')
conditionnelle. Après cela, il devient undefined
. C'est une valeur booléenne que je mets en place. Tant qu'il est avant if (item.className == 'items active')
il conservera sa valeur. Je n'ai aucune raison de le faire. J'ai essayé de faire this.init =
et en le définissant comme var init = init
. Est-ce que quelqu'un sait ou existe-t-il un moyen de conserver sa valeur tout au long de la fonction? Ce n'est pas le nom d'init, j'ai essayé un nom différent et ça fait toujours la même chose.
Merci, Darren
Vous n'utilisez pas la variable 'init' partout, donc je ne sais pas comment vous avez découvert à être indéfini ou la façon dont il serait question. Y a-t-il quelque chose qui manque ici? – Chuck
Salut, je l'ai fixé où il devrait être, j'ai oublié de revenir en arrière quelques modifications. – Darren
Quelle est la valeur de 'init' quand vous appelez' menuSwipe' et à quoi ressemble 'menuOpen' avec' init'? – lincolnk