J'ai une fonction de type récursive dans JavaScript qui fonctionne comme ceci: Remarque: j'ai simplifié la fonction pour faciliter la lecture. P> i avoir des balises "a" appelées comme ceci p> Cependant, ils ne cédent pas la minuterie, la minuterie continue de parcourir la fonction irrégrafeuse du Des idées Pourquoi? Je pense que cela pourrait avoir quelque chose à voir avec un problème d'étendue ou quelque chose comme ça. P> p> ClearTimeOut () code> être appelé. P>
6 Réponses :
Renvoyer false sur le lien
Étant donné que vous n'utilisez pas Var Totate, il ne faut pas être un problème de précaution puisque la rotation serait dans la portée de la fenêtre. Pouvez-vous montrer le code complet? p>
Il est considéré comme une mauvaise codage pour entrer en ligne le script - vous devez attacher le chargement du gestionnaire d'événements de la page p>
également, vous ne devez pas avoir la sécurité à l'intérieur d'une fonction qui pourrait être appelée à un Image p>
Essayez ceci: p> supposant p>
Il peut s'agir de la question de la portée afin de faire Reportez-vous Effacer l'exemple P> clairtimeout (rotation); code> p> p>
Il peut s'agir d'un problème de cadrage si vous ne déclarez pas Essayez ceci: p> rotate code> en externe.
var rotate = 0;
function loadThumb(thumb) {
rotate=setTimeout(function() {
loadThumb(next);
}, delay);
}
Je ne suis pas sûr de ce que vous faites exactement, car autant que je puisse vous voir, vous ne postez pas tout le code, mais cela semble mieux pour moi:
<a href="#" onclick="clearTimeout(loadThumb(3));">Load thumb 3</a>
Pourquoi JavaScript: - C'est défaut - et pourquoi aucun retour de faux dans la fonction?
Tandis que le Label JavaScript: code> n'est pas mal là-bas, il n'est pas utile non plus. Vous pouvez aussi bien écrire
foo: code> ou
bar: code> ou
sfgasdga: code>. S'il vous plaît supprimer, car cela pourrait faire penser que cela est nécessaire. @MPLUGJAN: Je ne dirais pas que c'est par défaut i>. Dans les liens (URL), il est utilisé comme un type de protocole de sorte que le navigateur sache quoi faire, mais
sur * code> est toujours interprété comme JavaScript (peut-être que c'est ce que vous vouliez dire, dans ce cas, NVM; )))).
Selon moi, ce n'est pas une étiquette, il est de (a été utilisé pour) dire au navigateur que le code qui arrive est JavaScript. Il n'est utile que si le navigateur est que c'est-à-dire et le premier script de la page est VBScript, car cela (au moins qu'il était utilisé) définirait la langue par défaut dans les gestionnaires d'événements en ligne vers VBScript.
Merci pour les notes. C'est mon erreur. Normalement, je place JavaScript: lorsque j'ajoute quelque chose dans l'attribut href.
Ouais, vous devez faire pivoter une variable globale. Il suffit de le déclarer en dehors de la fonction, comme:
<a href="#" onclick="clearTimeout(rotate); loadThumb(3);">Load thumb 3</a>
et retourne faux. Et ne pas avoir la rotation VaL devrait en faire un Var de Windows Scoped
Oh ouais c'est ce que je faisais, en l'appelant après avoir reçu des choses confuses, ça marche maintenant. Merci.
Si vous devez gérer plusieurs délais d'attente, vous pouvez utiliser un objet dans la portée globale et certaines méthodes personnalisées pour créer et supprimer vos délais d'attente. Pour accéder aux méthodes, vous pouvez définir les appels dans le gestionnaire ONCLICK de vos liens (comme dans l'exemple) ou utiliser une bibliothèque comme JQuery pour les lier. J'ai aussi posté un Exemple sur jsfiddle http://jsfiddle.net/agpzs/ p> p>