2013-04-10 32 views
5

Tôi muốn dừng vòng lặp trong một hàm từ một hàm khác trong JavaScript. Dưới đây là đoạn code mà tôi đã cố gắng:Dừng vòng lặp trong một hàm từ một hàm khác trong 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> 

đây là fiddle: http://jsfiddle.net/A5h8k/4/

+3

Bạn không thể; JavaScript là đơn luồng nên không có cách nào để thực hiện bất kỳ điều gì khác trong khi vòng lặp của bạn. –

Trả lời

4

var static loop = 1; này không hợp lệ, var loop = 1;, nhưng bạn bắt đầu một vòng lặp vô hạn, vì vậy bạn sẽ không thể để ngăn chặn nó cách này.

Sử dụng setInterval thay

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

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

Bạn có thể cho tôi một ví dụ không? – MHDaouas

+0

Tôi đã chỉnh sửa bài đăng của mình –

+0

Chức năng của bạn sẽ không được gọi nếu bạn có dấu ngoặc kép xung quanh nó như thế. Loại bỏ các dấu ngoặc kép để truyền hàm. Ngoài ra, là 'self' một biến tiêu chuẩn? –

Các vấn đề liên quan