2011-08-02 56 views
5

Ai đó có thể nhanh chóng và đơn giản giải thích cho tôi cách thực hiện một hành động vài giây một lần bằng cách sử dụng var timeOut = setTimeout(FunctionName, 5000);?Jquery - thực hiện một hành động mỗi vài giây

Tôi muốn chạy một hàm sau mỗi 5 giây.

+0

Tôi nghĩ bạn muốn setInterval chứ không phải setTimeout. – Matt

Trả lời

21

Như bạn yêu cầu một phương pháp sử dụng setTimeout:

function doStuff() { 
    console.log("hello!"); 
    setTimeout(doStuff, 5000); 
} 
setTimeout(doStuff, 5000); 

Nhưng nó có lẽ sẽ tốt hơn để sử dụng setInterval:

function doStuff() { 
    console.log("hello!"); 
} 
setInterval(doStuff, 5000); 
+0

+1. Tốt nhất là sử dụng 'setTimeout' bên trong hàm. – Shef

+0

Console.log nào thực hiện chính xác? – Iladarsda

+0

Nó in bất cứ điều gì bạn nói với nó để in cho bàn điều khiển (nhấn F12 trong các trình duyệt mới hơn để mở giao diện điều khiển). –

1

Sử dụng setInterval:

var timeOut = setInterval(nextNotice, 5000); 
1
var myFunction = function() { 
    //Do stuff 
    AnotherFunction(); 
}; 

var timeOut = setInterval(myFunction, 2000); 
2

Chỉ cần đặt setTimeout vào cuối bên trong chức năng của bạn, với một cuộc gọi đến chính nó - giống như một đệ quy đuôi trì hoãn.

1

Trong ví dụ dưới đây, khi một nút được nhấp, lĩnh vực đầu vào sẽ bắt đầu đếm (mãi mãi), bắt đầu từ 0.

<html> 
    <head> 
    <script type="text/javascript"> 
     var c = 0; 
     var t; 
     var timer_is_on = false; 

     function timedCount() { 
     document.getElementById('txt').value = c; 
     c = c + 1; 
     t = setTimeout(timedCount, 1000); 
     } 

     function doTimer() { 
     if (!timer_is_on) { 
      timer_is_on = true; 
      timedCount(); 
     } 
     } 
    </script> 
    </head> 
    <body> 
    <form> 
     <input type="button" value="Start count!" onclick="doTimer()"> 
     <input type="text" id="txt" /> 
    </form> 
    </body> 
</html> 
+0

[W3Schools không phải là một tài nguyên tuyệt vời] (http://w3fools.com/). Nếu bạn đang liên kết một bài viết trên một trang web khác, vui lòng tóm tắt bài viết tại đây. – lonesomeday

+0

Nhưng tài nguyên có một ví dụ hoàn hảo: – vaidas

+0

Không, nó có một ví dụ chức năng. Có rất nhiều vấn đề với bit mã đó làm cho nó trở thành một ví dụ kém (sử dụng một số như là một boolean, sử dụng một chuỗi với 'setTimeout', không có lời gọi thực sự của mã, tên biến vô nghĩa). – lonesomeday

1

bạn có thể làm một cái gì đó như:

$(document).ready(function() 
     { 
setTimeout(nextNotice, 5000); 
} 
function nextNotice() 
{ 
// do stuff 
setTimeout(nextNotice, 5000); 
} 
+0

Tại sao setTimeout được sử dụng hai lần? – Iladarsda

+0

đúng, bạn chỉ có thể gọi nextNotice() trong tài liệu sẵn sàng chức năng nếu bạn muốn các tin nhắn/hành động xuất hiện/xử lý ngay lập tức, thay vì chờ đợi thời gian đặt. –

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