Bonjour tout le monde,
Lors de l'exécution d'une fonction javascript IE m'affiche un msg " Stack overFlow at line : x "
est ce que quelqu'un connait une solution pour ce type de problemes.
Merci d'avance.
Bonjour tout le monde,
Lors de l'exécution d'une fonction javascript IE m'affiche un msg " Stack overFlow at line : x "
est ce que quelqu'un connait une solution pour ce type de problemes.
Merci d'avance.
Je l'ai déjà eu..
Tu rempli la pile de traitement..
Evite les while, les fonctions récursives.
Pose la partie moulinette de ton code.
Merci denisC et d-Rek pour vos réponses.
le message est apparue pour la premiere fois lorsque j'ai utilisé la méthode eval() apparemment. J'etais obligé de l'utiliser vu que la variable "elem.id" change dans chaque itération de la boucle. si je n'utilise pa la fonctino eval() le fonction clickMonth() s'execute toujour avec la derniere valeur de elem.id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 for(k=1;k<13;k++){ var elem = document.getElementById(k); var clickMonth = null; var commandClickMonth = "clickMonth = function() {clickMonth("+elem.id+"); }"; eval(commandClickMonth); if (document.addEventListener) { elem.addEventListener('click', clickMonth, false); }else{ elem.attachEvent('onclick', clickMonth); } }
Bonjour,
pour ne pas avoir à utiliser eval() :Mais je doute que ça résolve le problème : tu remplaces toujours la fonction par une nouvelle version ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part clickMonth = function() {clickMonth(elem.id);};
Je verrais plutôtAinsi chaque elem appelle la fonction avec un paramètre qui lui est propre ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part elem.onclick = function() {clickMonth(elem.id);};
A+
clickMonth = function() {clickMonth("+elem.id+"); }";
Clickmonth s'appelle elle-même, c'est de la récursivité.
Si clickMonth est bel et bien défini quelque part ailleurs (code que tu ne nous aurais pas donné), remplace juste le nom de ta variable clickMonth.
[/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 for(k=1;k<13;k++){ var elem = document.getElementById(k); var clickMonth = null; var commandClickMonth = "var myFunc = function() {clickMonth("+elem.id+"); }"; eval(commandClickMonth); if (document.addEventListener) { elem.addEventListener('click', myFunc , false); }else{ elem.attachEvent('onclick', myFunc ); } }
Merci beaucoup Mr Sergejack. C'est ca la faute.Clickmonth s'appelle elle-même, c'est de la récursivité.
Partager