在javascript中使用延时(特定情况下)。

问题描述 投票:0回答:1

我在这个网站上找到了一个js延时的示例代码片段。当我运行js调试时(点击按钮后),一切工作正常。每次更新都会在适当的延迟后显示在页面上。但当我删除调试并让脚本运行(点击按钮后)时,它就像运行所有代码一样,只给出最后一次更新。我也尝试了函数setTimeout(),但同样的事情发生了。当我单独测试时间延迟代码时(没有其他代码),它工作正常。

这是否与javascript的异步性有关?如果其他人都在使用时间延迟代码,我一定是漏掉了什么......那可能是什么?

下面的代码。

id="lottoNbr" style="margin-left:40px;" onclick="getRandom(8,2)" alt="dollar>signs"> click

上面是点击事件,下面是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>
javascript methods time delay
1个回答
0
投票

在网站上发现了这个提示。

PHP部分在页面加载时只执行一次。看看源代码>(右击页面,"显示源代码"),你会看到分配的值>是静态的,因为它是在页面加载到浏览器之前用PHP生成的。>请记住,Javascript和PHP是在不同的上下文中执行的。PHP > >服务器端,Javascript > 客户端。

一个小小的帮助来解决你的问题。http:/www.w3schools.comajax.

添加 window.addEventListener("onload", f())。当页面加载完毕后 添加onloaded事件监听器和要执行的功能。 不在主体加载事件期间。

© www.soinside.com 2019 - 2024. All rights reserved.