Le code suivant (voir Fiddle here ) lève le débordement de pile mentionné dans le titre de la question. J'essaie d'obtenir une ombre de boîte à afficher autour d'une image circulaire dans un effet d'impulsion. Quelqu'un peut-il signaler la récursivité, s'il vous plaît? Je suis très novice en Javascript et je ne le vois pas. Merci.
[~ # ~] html [~ # ~]
<div id="pulseDiv">
<a href="#" id="advisers-css-image">
<div id="advisersDiv"><img src="http://ubuntuone.com/1djVfYlV62ORxB8gSSA4R4"></div>
</a>
</div>
[~ # ~] css [~ # ~]
.Pulse { box-shadow: 0px 0px 4px 4px #AEA79F; }
Javascript
function fadeIn() {
$('#pulseDiv').find('div.advisersDiv').delay(400).addClass("Pulse");
fadeOut();
};
function fadeOut() {
$('#pulseDiv').find('div.advisersDiv').delay(400).removeClass("Pulse");
fadeIn();
};
Vos appels sont effectués de manière récursive, ce qui pousse les fonctions sur la pile à l'infini, ce qui provoque une erreur de dépassement de la pile d'appels maximale en raison d'un comportement récursif. Essayez plutôt d'utiliser setTimeout qui est un rappel.
En fonction également de votre balisage, votre sélecteur est erroné. CA devrait etre #advisersDiv
function fadeIn() {
$('#pulseDiv').find('div#advisersDiv').delay(400).addClass("Pulse");
setTimeout(fadeOut,1); //<-- Provide any delay here
};
function fadeOut() {
$('#pulseDiv').find('div#advisersDiv').delay(400).removeClass("Pulse");
setTimeout(fadeIn,1);//<-- Provide any delay here
};
fadeIn();
votre fonction fadeIn()
appelle la fonction fadeOut()
, qui appelle à nouveau la fonction fadeIn()
. la récursivité est dans le JS.