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é.
Bonjour, j'ai eu le meme type d'erreur, mais je ne vois pas de boucle ou de fonction récursive dans mon code javascript, ce que je fais est d'appeler la fonction ci dessous, sur un onChange du calendrier, que j'ai pris le soin d'attacher en pièce jointe, et ce qui est bizarre est que l'erreur apparaît lors du changement de l'année, et pas du mois ou du jour
Une petite idée ???
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 <SCRIPT> function datecontrol() { var dds = document.DataForm.elements["_attr_calendar1_2D_1110"].value; var jour= parseInt(dds.substring(0,2)); var mois= parseInt(dds.substring(3,5)); var annee= parseInt(dds.substring(6,10)); var dat_debS = new Date(annee,mois,jour); var dat_finS = new Date(annee,mois,jour+6); //dat_finS=dat_finS.setDate(jour+7); //dat_finS.getDate() dayd=dat_debS.getDay();alert("le jour est :" +dayd); if (dayd!=1) { //alert("je est :"+dayd ); alert("La semaine administrative doit commencer par Samedi/Saturday"); document.DataForm.reset(); } else { document.DataForm._attr_calendar2_2D_1110.value=dat_finS.getDate()+"/"+dat_finS.getMonth()+"/"+dat_finS.getYear(); document.DataForm.submit(); } } </SCRIPT>
Je pense que tu as du code JS autre part..
Tu n'aurais pas quelque chose comme ça dans ton head ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part <script language="JavaScript" src="fichier.js"></script>
En effet j'ai des includes, comme suit:
<link rel="stylesheet" type="text/css" media="all" href="/dp/pages/forage/JSCalendar/calendar-blue2.css" title="win2k-brown" />
<script type="text/javascript" src="/dp/pages/forage/JSCalendar/calendar.js"></script>
<script type="text/javascript" src="/dp/pages/forage/JSCalendar/calendar-en.js"></script>
<script type="text/javascript" src="/dp/pages/forage/JSCalendar/calendar-setup.js"></script>
j'y ai jetter un oeil, mais personnellement c'est du charabia pour moi, en plus ce qui m'intrigue, c'est que d'autres collegues, ont utilisé le meme calendrier sans aucun probleme, je pense donc que le souci doit venir de mon code a moi,
Je vais attacher mon JSP au cas ou qlq1 vouderai s'y attarder
Merci
en fait j'ai trouver l'erreur, c'était une fonction récursive dans le fichier importé calendar.js, la voici:
/******************************************************/
Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear;
Date.prototype.setFullYear = function(y) {
var d = new Date(this);
d.__msh_oldSetFullYear(y);
if (d.getMonth() != this.getMonth())
this.setDate(28);
this.__msh_oldSetFullYear(y);
};
/******************************************************/
je l'ai mis en commentaire, et ça a marché, mais je sais pas quel pourrai étre les effets secondaire, vous le savez vous ???
Partager