J'utilise JavaScript avec jQuery. J'ai le script suivant pour alerter hi
toutes les 30 secondes.
$(document).ready( function() {
alert("hi");
setInterval(function() {
alert("hi");
}, 30000);
});
Je veux alerter hi
lorsque la page se charge (lorsque le document/page est complètement chargé) et toutes les 30 secondes par la suite (comme hi
(0s) - hi
(30s ) - hi
(années 60) .. etc). Mais ma solution fonctionne sur deux instances. Un sur DOM prêt et l'autre en boucle. Existe-t-il un moyen de faire de même en une seule fois?
Vous pouvez voir mon violon ici.
Vous pouvez utiliser setTimeout à la place et faire replanifier le rappel lui-même.
$(function() {
sayHi();
function sayHi() {
setTimeout(sayHi,30000);
alert('hi');
}
});
Enveloppez votre code dans une fonction. Ensuite, passez la fonction comme premier argument à setInterval
et appelez la fonction:
$(document).ready( function() {
//Definition of the function (non-global, because of the previous line)
function hi(){
alert("hi");
}
//set an interval
setInterval(hi, 30000);
//Call the function
hi();
});
Eh bien, il y a probablement un moyen de le faire en un seul appel ..
setInterval(
(function x() {
alert('hi');
return x;
})(), 30000);
Une autre solution serait d'utiliser arguments.callee, mais comme il est désormais obsolète, il n'est généralement pas recommandé de l'utiliser.
setInterval(
(function() {
alert('hi');
return arguments.callee;
})(), 30000);
Non, ce n'est pas possible avec setInterval
. Vous pouvez utiliser setTimeout par exemple:
function foo() {
alert('hi');
setTimeout(foo, 30000);
}
$(function() {
foo();
});
$(function() {
function heythere() {
alert('hi');
setTimeout(heythere,30000);
}
heythere();
});
Si vous voulez qu'il ne s'exécute qu'une seule fois après 30 secondes, vous cherchez à utiliser setTimeout
pas setInterval
.