Javascript can';I don’我不能按规定的时间间隔工作

Javascript can';I don’我不能按规定的时间间隔工作,javascript,jquery,Javascript,Jquery,编辑:我插入了缺失的代码,以便大家可以看到boardGen()函数。我把它减少到4箱。然而,它仍然不起作用。我不能在boardGen()函数中使用setInterval吗 我已经编写了代码,可以在5X5板上生成随机字母。生成字母的代码效率很低(每个磁贴都有一堆switch语句),但它工作得很好,每次加载页面时都会生成一组新的字母 我试图让我的随机字母生成器每隔几秒钟切换一次代码以刷新。我研究发现setInterval函数允许我这样做。我试图按照文档中的示例进行操作,但代码只执行一次。setInt

编辑:我插入了缺失的代码,以便大家可以看到boardGen()函数。我把它减少到4箱。然而,它仍然不起作用。我不能在boardGen()函数中使用setInterval吗

我已经编写了代码,可以在5X5板上生成随机字母。生成字母的代码效率很低(每个磁贴都有一堆switch语句),但它工作得很好,每次加载页面时都会生成一组新的字母

我试图让我的随机字母生成器每隔几秒钟切换一次代码以刷新。我研究发现setInterval函数允许我这样做。我试图按照文档中的示例进行操作,但代码只执行一次。setInterval的唯一作用是第一次执行所需的时间。但在它执行之后,它就停止了。我知道我忽略了boardGen功能。它很长,因为我不是那么好。我只是想看看我的setInterval代码是否正确。有人能帮忙吗

   <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>LetterTouch</title>
</head>

  <link rel = "stylesheet" type="text/css" href="gameboard.css">
  <!-- <link href="scripts/jquery-ui-1.10.4.custom.css" rel="stylesheet" type="text/css"/>-->
  <script type="text/javascript" src="scripts/jquery-1.10.2.js"></script>
  <script type="text/javascript" src="scripts/jquery-ui-1.10.4.custom.js"></script>

  <script type="text/javascript">

var nIntervId;

function changeLetters() {
    nIntervId = setInterval(boardGen, 1);
    }

function boardGen() {
// inefficient way of generating random letters for each tile//
    var randomNumber = Math.floor((Math.random()*4)+1);

    switch (randomNumber) {
        case 1:
            $("document").ready(function() {
                $("#squares").selectable();
                 $(".A1").replaceWith("<li>A</li>");
      });
       break;

        case 2:
        $("document").ready(function() {
                $("#squares").selectable();
                 $(".A1").replaceWith("<li>B</li>");
      });
      break;

        case 3:
        $("document").ready(function() {
                $("#squares").selectable();
                 $(".A1").replaceWith("<li>C</li>");
      });
      break;

        case 4:
        $("document").ready(function() {
                $("#squares").selectable();
                 $(".A1").replaceWith("<li>D</li>");
      });
      break;




      }

    }

 </script>

<body onload="changeLetters();">



<ol id="squares">
  <li class="A1"></li>
  <li class="A2"></li>
  <li class="A3"></li>
  <li class="A4"></li>
  <li class="A5"></li>
  <li class="B1"></li>
  <li class="B2"></li>
  <li class="B3"></li>
  <li class="B4"></li>
  <li class="B5"></li>
  <li class="C1"></li>
  <li class="C2"></li>
  <li class="C3"></li>
  <li class="C4"></li>
  <li class="C5"></li>
  <li class="D1"></li>
  <li class="D2"></li>
  <li class="D3"></li>
  <li class="D4"></li>
  <li class="D5"></li>

</body>
</html>

信纸
var nIntervId;
函数changeLetters(){
nIntervId=设置间隔(boardGen,1);
}
函数boardGen(){
//为每个磁贴生成随机字母的低效方法//
var randomNumber=Math.floor((Math.random()*4)+1);
开关(随机数){
案例1:
$(“文档”).ready(函数(){
$(“#正方形”).可选();
美元(“.A1”)。替换为(“
  • A
  • ”; }); 打破 案例2: $(“文档”).ready(函数(){ $(“#正方形”).可选(); 美元(“.A1”)。替换为(“
  • B
  • ”; }); 打破 案例3: $(“文档”).ready(函数(){ $(“#正方形”).可选(); 美元(“.A1”)。替换为(“
  • C
  • ”; }); 打破 案例4: $(“文档”).ready(函数(){ $(“#正方形”).可选(); 美元(“.A1”)。替换为(“
  • D
  • ”; }); 打破 } }

  • 您的代码可以正常工作(Firefox最新版本)。这是另外一回事

    (刚刚将间隔更改为5000,并为您添加了警报)


    为了便于代码的可读性,最好先定义
    boardGen()
    ,然后再在
    changeLetters()

    中使用它。您是否使用了
    nIntervId
    变量?为什么要混淆
    boardGen()
    一些重要的隐藏内容?您在这里正确设置了间隔,您的问题显然来自您在
    boardGen()
    函数中所做的操作。如果这是一个无效的方法,那么首先要避免每秒调用两次。顺便说一句,控制台中有错误吗?请尝试
    $(document).ready(changeetters)
    ,而不是body onload。正如@A.Wolff所说,问题可能出在boardGen函数中。很抱歉,但答案是什么?将boardGen函数插入changeetters函数。这也不是答案。“仅供参考,最佳做法是在changeetters()之前定义boardGen()不知道为什么这会是一个最佳实践,函数在同一个范围内提升是的,他问(暗示)“我只是想看看我的setInterval代码是否正确。”Wolff你是对的,这是为了代码的可读性(使用前定义)@JoeFrambach我同意user3041539的这一点,这回答了我一直在问的问题,我明白了。我想这不是答案。
    var nIntervId;
    
    function changeLetters() {
        nIntervId = setInterval(boardGen, 500);
        function boardGen() {
            alert(1);
        }
    }