Javascript can';I don’我不能按规定的时间间隔工作
编辑:我插入了缺失的代码,以便大家可以看到boardGen()函数。我把它减少到4箱。然而,它仍然不起作用。我不能在boardGen()函数中使用setInterval吗 我已经编写了代码,可以在5X5板上生成随机字母。生成字母的代码效率很低(每个磁贴都有一堆switch语句),但它工作得很好,每次加载页面时都会生成一组新的字母 我试图让我的随机字母生成器每隔几秒钟切换一次代码以刷新。我研究发现setInterval函数允许我这样做。我试图按照文档中的示例进行操作,但代码只执行一次。setInterval的唯一作用是第一次执行所需的时间。但在它执行之后,它就停止了。我知道我忽略了boardGen功能。它很长,因为我不是那么好。我只是想看看我的setInterval代码是否正确。有人能帮忙吗Javascript can';I don’我不能按规定的时间间隔工作,javascript,jquery,Javascript,Jquery,编辑:我插入了缺失的代码,以便大家可以看到boardGen()函数。我把它减少到4箱。然而,它仍然不起作用。我不能在boardGen()函数中使用setInterval吗 我已经编写了代码,可以在5X5板上生成随机字母。生成字母的代码效率很低(每个磁贴都有一堆switch语句),但它工作得很好,每次加载页面时都会生成一组新的字母 我试图让我的随机字母生成器每隔几秒钟切换一次代码以刷新。我研究发现setInterval函数允许我这样做。我试图按照文档中的示例进行操作,但代码只执行一次。setInt
<!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);
}
}