2015-03-02 79 views
-1

這裏是我當前的代碼:JavaScript setInterval功能:bug還是不是?

var intervalStreet = 1000; 
var richPersonOnStreet = false; 
var poorPersonOnStreet = false; 

function streetIntervalEvent() { 
    var peopleRandomChance = Math.random(); 
    document.getElementById("number").innerHTML = peopleRandomChance; 
    if (peopleRandomChance <= 0.1) { 
     richPersonOnStreet = true; 
     document.getElementById("streetText").innerHTML = "A rich man is on the street!"; 
     intervalStreet = 5000; 
     setInterval(function(){var richPersonOnStreet = false; document.getElementById("streetText").innerHTML = "Nothing is happening on the street...";}, 5000); 
     intervalStreet = 1000; 
    } 
} 
setInterval(streetIntervalEvent, intervalStreet); 

所有的代碼看起來罰款和花花公子,但在我離開這個程序了一會兒,間隔變得完全搞砸了。嘗試離開這個地址http://jsfiddle.net/w0gerao3/ 10分鐘...你會明白我的意思。

這是setInterval函數中的一個可解決的錯誤嗎?

+2

不可以,這是你自己的代碼可修復的錯誤。從本身由'setInterval()'觸發的函數調用'setInterval()'可能不是您想要做的事情。 – 2015-03-02 14:49:09

+0

你想用你的代碼完成什麼?你在函數聲明後設置了一個初始間隔,但是在它裏面你再次執行它;這可能是造成混亂時間間隔的原因嗎? – 2015-03-02 14:49:53

+0

你不會和'setTimeout'和'setInterval'混淆嗎? – axelduch 2015-03-02 14:53:39

回答

0

您每秒鐘致電streetIntervalEvent

每次撥打streetIntervalEvent時,你有10%的機率每5秒致電function(){var richPersonOnStree...

10分鐘後,您將每隔5秒調用一次內部函數〜60個間隔。

最終你會有一個無限的數字(除非瀏覽器會首先崩潰)。


這可能是可以解決的,但我不知道你是什麼試圖放在首位來實現的。