Pourquoi setTimeout() la fonction s'exécute une seule fois?
Je fais un javascript bookmarklet qui se redimensionne toutes les images, périodiquement.
javascript: function x(){
for(i=0;i<=document.getElementsByTagName('img').length;i++)
document.getElementsByTagName('img')[i].width+=1;
};
t = window.setTimeout("x()",100);
void(0);
Mais il s'exécute une seule fois. Quel est le problème ici??
Qu'essayez-vous de réaliser? Aussi votre pour la boucle à la fin probablement destiné à être
Vous ne devriez pas faire
semble plutôt inutile, parce que si vous n'avez pas l'arrêt de la minuterie images croître indéfiniment.
i++
.Vous ne devriez pas faire
i<=document.getElementsByTagName('img').length
. Vous êtes d'une nouvelle sélection de toutes les images dans le document autant de fois qu'il y a des images. Vous devriez cache de la sélection. var images = document.getElementsByTagName('img'); for( var i = 0, len = images.length; i < len; i++ )
Notez également que je n'ai <
au lieu de <=
.semble plutôt inutile, parce que si vous n'avez pas l'arrêt de la minuterie images croître indéfiniment.
OriginalL'auteur Shubham | 2010-12-24
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la recherche pour
setInterval()
au lieu desetTimeout()
par hasard?Mais encore, cette tâche peut être réalisée par setTimeout()? J'ai essayé de placer la déclaration en x() et la fonction qu'il n'a pas fonctionné.
essayez setTimeOut(x,100).
Je crois que oui mais je ne suis pas sûr de savoir comment. Je sais que vous êtes un pas.
oui, vous pouvez le faire avec setTimeout(), j'ai ajouté une réponse ci-dessous
OriginalL'auteur BoltClock
Ici est le même code correctement indenté pour plus de clarté
fenêtre.setTimout() exécute le passé de code qu'une seule fois parce qu'elle est destinée à. Si vous souhaitez exécuter un code plus souvent, l'utilisation de la fenêtre.setInterval().
i++
.Ne serait pas
++
seul déclencher une erreur de syntaxe?Vrai. Si c'est quelque chose que la console d'erreur devrait avoir montré.
OriginalL'auteur Oswald
Ne devrait-elle pas être
i++
à la fin de votre boucle for?OriginalL'auteur epaps
Aussi, il y a une erreur de syntaxe.
for(i=0;i<=document.getElementsByTagName('img').longueur;i++)
OriginalL'auteur miqbal
Vous avez besoin de mettre la...
l'intérieur de la fonction x() les parenthèses { } et il fonctionne avec SetTimeout()
Vous pouvez uniquement appeler x() après que toutes les images ont été chargées sur la page ou il y a une erreur.
OriginalL'auteur gravityboy
Il pourrait êtrewindow.setTimeOut("x",100)
Edit : corriger la réponse à cette
window.setTimeout(x,100)
.PS: c'est ce qui arrive si vous travailler simplement avec un IDEs.
setTimeout
n'est pas juste, et"x"
de ne pas faire n'importe quoi.vous avez raison sur les deux. Il aurait dû être de cette fenêtre.setTimeout(x,100) .
il a à x() donc il se réfère à une fonction
OriginalL'auteur Biswanath