используя задержку в javascript (конкретное c обстоятельство) - PullRequest
0 голосов
/ 24 апреля 2020

Я нашел пример кода на этом сайте с задержкой js. Когда я запускаю отладку js (после нажатия кнопки) все работает нормально. Каждое обновление отображается на странице после соответствующей задержки. Но когда я удаляю отладку и запускаю скрипт (после нажатия кнопки), он как бы запускает весь код и выдает только последнее обновление. Я пробовал также функцию setTimeout (), но происходит то же самое. Когда я тестирую сам код задержки (без другого кода), он работает нормально.

Имеет ли это какое-либо отношение к асинхронной природе javascript? Если другие люди используют код задержки, я должен что-то упустить ... что это может быть?

код ниже:

id = " lottoNbr "style =" margin-left: 40px; " onclick = "getRandom (8,2)" alt = "доллар> знаки">
событие клика

выше, javascript ниже:

function getRandom(y1, z1) {
      var y2=y1; //this is the maximum random number generated
      var z2 = z1; // determined which game is being played
      var choice, choice1;
      var i, count;

      //f = setInterval(rNbr,50);
       /* pick 10 numbers from 1 to 9 slowly and return the last value to the screen three times*/
      function rNbr() {
          choice = 1 + (Math.floor(Math.random() * y2)); 
          choice1 = choice.toString();
          gameName();
      }  

      function sleep(milliseconds) {
        const date = Date.now();
        let currentDate = null;
        do {
          currentDate = Date.now();
        } while (currentDate - date < milliseconds);
      }
      function gameName() {
        switch(z2) {
            //case 2 means big three game, case 3 meand giant 4 game, etc
            case 2:
              if (i == 0) {
                document.getElementById("3lottoNbr1").innerHTML = choice1;
              } else if (i == 1) {
                document.getElementById("3lottoNbr2").innerHTML = choice1;
              } else {
                document.getElementById("3lottoNbr3").innerHTML = choice1;
              }
              break;
            case 3: //giant 4
              if (i == 0) {
                document.getElementById("4lottoNbr1").innerHTML = choice1;
              } else if (i == 1) {
                document.getElementById("4lottoNbr2").innerHTML = choice1;
              } else if (i == 1) {
                document.getElementById("4lottoNbr3").innerHTML = choice1;
              } else {
                document.getElementById("4lottoNbr4").innerHTML = choice1;
              }
              break;

        }

      }

      generate random numbers spin style in each of the game windows
      setTimeout(rNbr, 500);
      for(i=0; i<=z2; i++) {
        for(count = 0; count <= 2; count++) {
          rNbr();
          document.getElementById("proof").innerHTML = count;
          sleep(2000);
        }
        sleep(1000);
      }
    }

</script>

1 Ответ

0 голосов
/ 07 мая 2020

обнаружил эту подсказку на сайте:

Часть PHP выполняется только один раз при загрузке страницы. Посмотрите на исходный код> (щелкните правой кнопкой мыши на странице, «показать исходный код»), вы увидите статически назначенное значение>, поскольку оно генерируется с помощью PHP до загрузки страницы в браузер. > Помните, что Javascript и PHP выполняются в разных контекстах: PHP>> на стороне сервера, Javascript> на стороне клиента.

Небольшая помощь для решения вашей проблемы: http://www.w3schools.com/ajax/.

add window.addEventListener ("onload", f ()); после загрузки страницы добавить загруженный обработчик событий и функцию, которую необходимо выполнить. Не во время события загрузки тела.

...