2015-12-21 93 views
1

很抱歉,如果你认为我问了太多问题,这可能是我最后一个问题。 所以,这是剪切。有一个按钮调用“nodeIncrease();”函数和setInterval是假设重复,但它没有做任何事情。 我不知道我是否应该在某处放置一段时间(true)循环,但是我试过了,它只是让我的浏览器滞后。setInterval是否重复?

var click = 1; 
var unitt = 0; 
var node = 0; 
var nodePrice = 10; 
var nodeInterval; 
function unittIncrease() { 
    unitt += click; 
    document.getElementById('unitts').innerHTML = "Unitts: " + unitt; 
} 
function nodeIncrease() { 
    if (unitt >= nodePrice) { 
     clearInterval(nodeInterval); 
     node++; 
     unitt -= nodePrice; 
     document.getElementById('unitts').innerHTML = "Unitts: " + unitt 
     document.getElementById('nodes').innerHTML = "Nodes: " + node + " - $" + nodePrice; 
     nodeIntervalHandler(); 
    } else { 
     alert("Inefficient amount of unitts.") 
    } 
} 
function nodeIntervalHandler() { 
    nodeInterval = setInterval(nodeLoop, 1000); 
} 
function nodeLoop() { 
    unitt += (node * 0.1) 
} 
+0

什么是你期望的输出? – DigitalDouble

+0

while(true)loop is OK如果使用正确。但是如果你做错了,那么你会挂掉浏览器,因为Javascript是单线程的。至于setInterval,你可以clearInterval,但你必须提供html,所以我们可以确认你的代码是正确的。 – Will

+1

'setInterval'重复yes。但是你重复'nodeLoop'的功能并没有做任何事情。 – DigitalDouble

回答

2

是,setInterval重复,直到你打电话clearInterval与间隔停止。举例来说,下面的代码将会计数到5. setInterval设置计数器,setTimeout在5秒内设置一个单独的事件来停止计数器,并且clearInterval停止计数。

var value = 0; 
 
var log = document.getElementById('log'); 
 

 
function increment() { 
 
    value++; 
 
    log.innerHTML = log.innerHTML + '<li>' + value + '</li>' 
 
} 
 

 
var count = setInterval(increment, 1000); 
 

 
setTimeout(function() { 
 
    clearInterval(count); 
 
}, 5000);
<ul id="log"></ul>