2013-04-10 61 views
5

我想停止JavaScript中另一個函數的函數循環。這裏是我試過的代碼:停止JavaScript中另一個函數的函數循環

<a onmousedown="startLoop();" onmouseup="stopLoop();" > 
    Start loop 
</a> 

<script> 
var static loop = 1; 

function startLoop() { 
    while(loop ==1) { 
    } 
    alert("stop"); //This line is not executed 
} 

function stopLoop() { 
    loop = 2; 
} 
</script> 

這裏是小提琴: http://jsfiddle.net/A5h8k/4/

+3

你不能; JavaScript是單線程的,所以在循環過程中無法執行其他任何操作。 – 2013-04-10 14:46:45

回答

4

var static loop = 1;是無效的,var loop = 1;,但你開始一個無限循環,所以你將無法阻止它這條路。

使用setInterval代替

var int = self.setInterval(function(){myLoop()},100); 
function myLoop() { 
    //do stuff 
} 

function stopLoop() { 
    window.clearInterval(int); 
} 
+0

請你能舉個例子嗎? – MHDaouas 2013-04-10 14:48:43

+0

我已經編輯我的職務 – 2013-04-10 14:49:08

+0

您的功能不會,如果你周圍有引號這樣的調用。刪除引號來傳遞函數。另外,「自我」是一個標準變量嗎? – 2013-04-10 14:52:33