问题简单(javascript)

时间:2013-01-04 18:34:53

标签: javascript

任何人都可以解释为什么我无法停止并开始这个循环吗?

 <input type="button" value="start" onclick="start()">
 <input type="reset" value="stop" onClick="stop()">

var startLottery = false;

while(startLottery){
setInterval(function(){automateLottery()},120);
startLottery;
};

var start = function(){
startLottery = true;    
};

var stop = function(){
startLottery = false;   
};

谢谢

4 个答案:

答案 0 :(得分:2)

问题1

while循环仅在操作数求值为true时执行。

但是,您的startLottery变量等于false

所以while循环永远不会执行。

问题2

您实际上没有更改startLottery变量的值,所以即使循环执行了,它也永远不会终止。

答案 1 :(得分:2)

你无法启动和停止这样的循环。您需要使用setIntervalclearInterval

JS:

var lotteryInterval;

var start = function(){
    lotteryInterval = setInterval(lotteryFunc, 120);
};

var stop = function(){
    clearInterval(lotteryInterval);
};

var lotteryFunc = function () {
    automateLottery();
};

HTML:

<input type="button" value="start" onclick="start()">
<input type="reset" value="stop" onClick="stop()">

修改:Working demo

答案 2 :(得分:0)

我相信你正在寻找这个(假设你有一个automateLottery函数):

var timer;

var start = function(){
    timer = setInterval(automateLottery, 120);
};

var stop = function(){
    clearInterval(timer);
};

start();

答案 3 :(得分:0)

如果您为代码提供的内容与我看到的完全相同,则永远不会输入while循环。页面将被呈现(input s),然后变量startLottery将被设置为false。接下来,循环将评估表达式(它将始终返回false)并且永远不会实际进入循环。