2010-12-15 24 views
31

ví dụ: tôi muốn gọi hàm js lúc 10.00.00.00 am làm cách nào tôi có thể làm?Gọi hàm javascript tại một thời điểm cụ thể trong ngày

<script type="text/javascript"> 

var now = new Date(); 

var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 30, 0, 0) - now; 

setTimeout(function{openAPage(), setInterval(openAPage, 60*1000)}, millisTill10) 

function openAPage() { 

var startTime = new Date().getTime(); 
var myWin = window.open("http://google.com","_blank") 
var endTime = new Date().getTime(); 
var timeTaken = endTime-startTime; 


document.write("<br>button [email protected]</br>") 
document.write(new Date(startTime)); 
document.write("<br>page [email protected]</br>") 
document.write(new Date(endTime)); 
document.write("<br>time taken</br>") 
document.write(timeTaken); 

myWin.close() 

} 

</script> 

tôi mong đợi từ mã này lúc 00,30 nó sẽ mở google và sau đó cứ sau 1 phút nó sẽ làm lại lần nữa? whats sai với mã đó?

Trả lời

64

Bạn cần setTimeout để đặt bộ hẹn giờ và Date để tính thời gian bộ hẹn giờ cần cho đến khi bộ kích hoạt kích hoạt.

var now = new Date(); 
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) - now; 
if (millisTill10 < 0) { 
    millisTill10 += 86400000; // it's after 10am, try 10am tomorrow. 
} 
setTimeout(function(){alert("It's 10am!")}, millisTill10); 
+0

nhờ làm việc .. một điều nữa tôi muốn gọi đó là chức năng mỗi 5 phút sau đó từ 10 giờ sáng như thế nào có thể làm điều đó? –

+2

Bạn có thể sử dụng ['setInterval'] (https://developer.mozilla.org/en/DOM/window.setInterval). 'interval = setInterval (func, 5 * 60 * 1000);' thì bạn có thể 'clearInterval (interval)' khi bạn không muốn tiếp tục. –

+0

khoảng thời gian có giá trị từ 10 giờ sáng hoặc hợp lệ khi tôi mở trang? –

0

Giả sử mã tọa lạc trên một trang web mà sẽ được nạp trước 10:00 và sẽ vẫn được xem lúc 10:00, bạn có thể sử dụng setTimeout() để thiết lập một sự kiện theo thời gian. Hàm này nhận một số câu lệnh JS để thực thi và số mili giây trước khi nó thực thi. Bạn có thể tìm thấy phần thứ hai này khá dễ dàng với các hàm ngày tháng được tích hợp sẵn.

+0

u có thể gửi một ví dụ mã xin? –

9

Giải pháp của tôi để chạy tập lệnh tại một thời điểm cụ thể, btw không kiểm tra lỗi thời gian chờ âm.

//year, month 0-11, date, hour, min (can add ,sec,msec) 
var eta_ms = new Date(2015, 0, 21, 17, 0).getTime() - Date.now(); 
var timeout = setTimeout(function(){}, eta_ms); 
2

Vâng, bạn có thể sử dụng nút gói ontime

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