0
votes

Mon compte à rebours Ajax ne fonctionne pas comme il se doit?

J'ai ici Ajax + HTML et il semble ne pas fonctionner comme il le devrait. Fondamentalement, il (travail avec / usage) uniquement le premier numéro (compte) et il semble que le reste soit oublié?

mon code p>

p>

<script id="ajax">
  var count = 200;
  var counter = setInterval(a2, 1000);

  function a2() {
    count = count - 1;
    if (count < 0) {
      clearInterval(counter);
      return;
    }
    document.getElementById("a2").innerHTML = count;
  }
</script>
<div id="a2"></div>

<script id="ajax">
  var count = 100;
  var counter = setInterval(a3, 1000);

  function a3() {
    count = count - 1;
    if (count < 0) {
      clearInterval(counter);
      return;
    }
    document.getElementById("a3").innerHTML = count;
  }
</script>
<div id="a3"></div>


0 commentaires

3 Réponses :


0
votes

Le problème ici est var code> dans JS est la fonction SPOPED. Puisque vous l'avez utilisé hors d'une fonction, il est à peu près global tout au long du script. Que diriez-vous de faire la mise en œuvre du compteur dans une fonction et de l'appeler comme ceci?

p>

<script id="ajax">
  function counter (elem, count) {
    var counter = setInterval(func, 1000);

    function func() {
      count = count - 1;
      if (count < 0) {
        clearInterval(counter);
        return;
      }
      document.getElementById(elem).innerHTML = count;
    }
  }
  counter("a2", 200);
</script>
<div id="a2"></div>

<script id="ajax">
  counter("a3", 100);
</script>
<div id="a3"></div>


2 commentaires

Bonjour, merci cela semble bien fonctionner, mais maintenant je courais dans le problème secondaire et c'est, ce n'est pas exécuté, ou bien le premier script, mais l'autre partie n'est pas. Cela signifie qu'une seule minuterie est active à l'époque et après que cette minuterie soit inférieure à 0, l'autre commence. Je ne sais pas comment dois-je résoudre ce problème. TLDR: Ça passe à travers Ajax et il charge tous les scripts, mais il l'exécute un par un, après la première minuterie se passe en dessous de 0 l'autre départ.


Pourriez-vous ajouter une mise à jour de votre question avec le code que vous essayez actuellement?



0
votes

Non, vous devez ajouter deux codes dans une fonction setInterval code> pour exécuter le même moment:

p>

<div id="a2"></div>
<div id="a3"></div>


0 commentaires

0
votes

Essayez celui-ci strong>

p>

<div id="a2"></div>
<div id="a3"></div>


1 commentaires

Merci pour la part, ce qui fonctionnerait, mais cela ne semble pas optimisé si j'ai beaucoup de code ici.