2015-05-29 33 views
10
$(document).ready(function() { 
    var score = 0; 

    $("body").mousemove(function() {   
     score++; 
     $("#result").val(score); 
     console.log(score); 
    }); 

}); 

Điểm số sẽ tăng mỗi khi tôi di chuyển chuột, nhưng làm cách nào để thêm chức năng để giảm điểm số cho đến 0 khi chuột không di chuyển?Cách thực hiện chức năng khi chuột không di chuyển?

+1

sử dụng 'setTimeout' hoặc' setInterval'. –

+0

Duplicate http://stackoverflow.com/questions/609965/detecting-when-the-mouse-is-not-moving –

Trả lời

7

Bạn có thể thiết lập một khoảng thời gian mà làm giảm giá trị nếu chuột không di chuyển, và rõ ràng nó khi nó di chuyển, và đặt lại nó, một cái gì đó như thế này:

$(document).ready(function() { 
    var score = 0, decreaseInterval, intervalTime = 1000; 

    function decrease() { 
     if (score > 0) score--; 
     $("#result").val(score); 
    }; 

    decreaseInterval = setInterval(decrease, intervalTime); 

    $("body").mousemove(function(){ 
     clearInterval(decreaseInterval); 
     score ++; 
     $("#result").val(score); 
     decreaseInterval = setInterval(decrease, intervalTime); 
     console.log(score); 
    }); 
}); 

Đây là một fiddle để chứng minh nó làm việc : https://jsfiddle.net/0swrae76/1/

+0

Suy nghĩ về vòng lặp sự kiện JavaScript Tôi không nghĩ rằng bạn cần phải clearInterval và setInterval trên mỗi di chuyển chuột. Intead Tôi khuyên bạn nên setInterval một lần và sử dụng một cờ boolean để quản lý mọi thứ. – Sukima

+0

Giải pháp tuyệt vời !!! Cảm ơn bạn ~ –

0

Tùy chọn: Sử dụng thời gian đã trôi qua. Khi chuột được di chuyển, hãy kiểm tra now() so với lần cuối cùng chuột được di chuyển. Sử dụng thời gian trôi qua để giảm điểm số trong một đoạn.

+1

Tôi đang xen vào cách thực hiện tùy chọn 2. –

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