web-dev-qa-db-fra.com

Comment faire un script pour les nombres et impairs de 1 à 1000 fr Javascript?

J'étudie un livre de Javascript avec des exemples résolus mais il y a un exemple sans solution. J'aimerais savoir comment le faire ...

En javascript (dans le navigateur), je devrais écrire des nombres pairs de 1-1000 et, une fois l'opération terminée, écrire des nombres impairs de 1-1000 ... savoir si le premier cycle est terminé et commencer à écrire des nombres impairs?

Voici comment j'ai commencé:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
   <title>Test</title>
 </head>
 <body>
<script type="text/javascript">
/* <![CDATA[ */
var i;
for (i = 0; i < 1000; i++)
if ((i % 2) == 0)
  document.writeln(i);

/* ]]> */
</script>
 </body>
</html>
3
Byakugan

Essayez ceci:

 function partA() {
        for (var i = 0; i < 1000; i++){
            if ((i % 2) == 0) document.write(i + ' ');
        }
        window.setTimeout(partB,1000)
    }

    function partB() {
        for (var i = 0; i < 1000; i++){
            if ((i % 2) !== 0) document.write(i + ' ');
        }
    }

    partA();

SIDENOTE:

Utilisez document.write pour tester uniquement. Si vous l'exécutez sur un document HTML chargé, tous les éléments HTML seront écrasés. (Comme vous pouvez le voir dans mon exemple)

4
bambam

Vous devriez essayer quelque chose comme ça:

(function(){

  for (var i = 0; i < 1000; i++){
    if ((i % 2) === 0) document. write(i + ' ');
  }

  for (var i = 0; i < 1000; i++){
    if ((i % 2) !== 0) document. write(i + ' ');
  }
})();

* Vous ne devriez utiliser document.write qu'à des fins de test

1
ianaya89

Je n'ai pas pu faire une pause entre les itérations du comptage. Le code ci-dessous, à la place de votre script, vous donnera 0 à 1 000 événements, puis une cote, 1 par ligne.

Il existe déjà des discussions sur l'attente en javascript sur le site: Quel est l'équivalent de Thread.sleep () de Java en JavaScript?

<script>
for(var mod = 0; mod<2; mod++){
  for (var i = 0; i < 1000; i++)
    if ((i % 2) == mod)
      document.writeln(i+"<br>");
}
</script>
1
Greg Syme

Les autres solutions publiées ici sont correctes, mais il n’ya aucune raison de passer par tout le travail modulo:

function evens () {
    var i;
    for (i = 2; i <= 1000; i++,i++) {
        document.writeln(i + '<br>');
    }
};
function odds () {
    var i;
    for (i = 1; i < 1000; i++,i++) {
        document.writeln(i + '<br>');
    }               
};
evens();
setTimeout(odds, 2000);
0
James Irwin

Tout d’abord, si vous voulez un nombre pair de 1 à 1000, la variable d’itération doit commencer à 1, pas à 0. :) Pour écrire des nombres impairs après des paires, vous pouvez simplement mettre une autre boucle derrière la première avec if (i% 2 == 1) et ça devrait aller!

0
baron

Je ne sais pas comment y ajouter la "pause" entre l'écriture d'un numéro et savoir si le premier cycle est terminé et commencer à écrire des nombres impairs

Utilisez une fonction. Il devrait également figurer dans le livre que vous lisez. Utilisez un pour même et un autre pour impair. Il devrait y avoir un chapitre sur la gestion des événements, où vous utilisez des éléments (comme des boutons) pour gérer les clics. Utilisez cela pour appeler les fonctions.

Aussi, essayez de lire plus loin. Les fonctions document.write* ne sont pas vraiment idéales, sauf pour les tâches effectuées lors du chargement de la page. Essayez d’utiliser des méthodes beaucoup plus avancées pour écrire dans le DOM. Ceux-ci devraient également figurer dans ce livre.

Enfin, JavaScript ne "met pas en pause" et n'a pas non plus quelque chose comme sleep. Il a des minuteries cependant, mais cela fonctionne différemment de sleep.


Une note sans rapport, je crois que vous utilisez un vieux livre. "HTML5" requiert uniquement le "doctype html5" et le <html>.

<!doctype html>
  <html>
    ...
0
Joseph