2011-09-23 78 views
0

我有一個頁面,在ID爲「count」的DIV中倒計時如何使用JavaScript來監控div值的變化?

我想監視這個div值,當它達到0時,會彈出一個警報。

我已經戈諾只要

if(parseInt(document.getElementById('count').innerHTML) < 2){} 

但我不知道該怎麼「聽」爲DIV改變

誰能幫助我?

順便說一句:它需要在純粹的JavaScript,沒有jQuery的東西。

更新:

我在原始代碼中沒有這麼說。這是一個外部頁面,我試圖在地址欄中運行此代碼

+1

通過什麼手段,你改變'#count'的價值? –

+0

而不是在'DIV'中偵聽更改,最好是在倒計時腳本中監聽_stopping倒計時_。 –

回答

1

如果您要更改#count的值,則請調用該地點的警報。如果不使用:

window.setInterval(function(){ 
    if(parseInt(document.getElementById('count').innerHTML) < 2) alert('Alarm!'); 
},1000); // 1s interval 

UPDATE 要清除該時間間隔:

var timer = window.setInterval(function(){ 
    if(parseInt(document.getElementById('count').innerHTML) < 2) { 
     alert('Alarm!'); 
     window.clearInterval(timer); 
    } 
},1000); // 1s interval 

//or by using non-anonymous function 

function check(){ 
if(parseInt(document.getElementById('count').innerHTML) < 2) { 
    alert('Alarm!'); 
    window.clearInterval(timer); 
} 
} 

var timer = window.setInterval(check,1000); 
+0

同樣取消超時也是件好事,否則代碼會每秒都會彈出警報(或者您的意圖是......)。 – RobG

+0

你說得對。剛剛更新。 –

2

想必你有一個函數運行基於的setInterval的setTimeout。當該函數變爲零時,調用你的函數。

如果你不能做到這一點,你可以嘗試優化輪詢 - 使用的setInterval讀取值,估計當它可能是接近零,再次檢查和評估時它可能是零,等等。當它是零,做你的事。

有DOM突變事件,但他們已被取消,從來沒有得到很好的或廣泛反正支持。另外,它們在內容變化時被調用,因此對於您的場景而言可能太頻繁。

0

的唯一有效的方法來監視這個是去,實際上是改變DIV的代碼並修改它或把它掛到你調用一個函數時,它更新div的內容。任何時候div變化的內容都沒有通用的通知機制。您將更加成功地研究修改變更的來源。

我知道除了變化的源唯一的選擇將使用間隔定時器到「人頭」的div內容時,它已經改變了注意。但是,這是非常低效的,並且在注意到實際變化時總會有一些固有的延遲。電池壽命(筆記本電腦或智能手機)連續運行也不好。

0

你不聽爲div改變。 div就是爲了直觀表示程序的狀態。

相反,內無論定時事件掰着指頭數,使用條件,如...

if (i < 2) { 
    // ... 
} 
+0

實際上,我試過了,但它很快凍結了頁面。 – Javascriptnoob