2012-05-16 20 views
2
var timer = setInterval(function() { 
    var secs = ytplayer.getCurrentTime(); 
    var minutes = Math.floor(secs/60); 
    var seconds = Math.floor(secs % 60); 
    var tsecs = ytplayer.getDuration(); 
    var tminutes = Math.floor(tsecs/60); 
    var tseconds = Math.floor(tsecs % 60); 
    var time = minutes + ":" + seconds + "/" + tminutes + ":" + tseconds; 
    document.getElementById('currenttime').innerHTML = time; 
}, 1000); 

此代碼在firefox中不起作用,但它在Chrome和IE中都有效。JavaScript不工作在Firefox:未定義的變量?

我用螢火蟲檢查過,它表示變量秒,分,秒,tsecs,tminutes,tseconds和時間沒有定義。

我不知道如何解決這個問題,因爲我確實使用var來定義它們。有誰知道我做錯了什麼?

感謝

+3

什麼是'ytplayer'? – ManseUK

+0

你爲什麼不這樣做:'new Date()'? –

+0

我想'ytplayer'是某種視頻播放器。 – Joseph

回答

2

這聽起來像你有id爲ytplayer元素,並假設window.ytplayer會自動創建。

不要做出這樣的假設。使用document.getElementById(並確保您有一個觸發標準模式的Doctype)。

+0

其實我早先在代碼中有document.getElementById,所以我認爲它已經被定義了。 'var ytplayer = document.getElementById(" ytplayer ");' 把它放在函數中可以工作,但爲什麼我必須在每個函數中聲明它? – cohen

+0

大概是因爲[範圍](http://stackoverflow.com/questions/500431/javascript-variable-scope)你放的是不夠寬。 – Quentin

+0

好吧,看看範圍。謝謝。 – cohen

0

試試這個

var timer = setInterval(function(){ 
    var secs = ytplayer.getCurrentTime(), 
    minutes = Math.floor(secs/60), 
    seconds = Math.floor(secs % 60), 
    tsecs = ytplayer.getDuration(), 
    tminutes = Math.floor(tsecs/60), 
    tseconds = Math.floor(tsecs % 60), 
    time = minutes + ":" + seconds + "/" + tminutes + ":" + tseconds; 
    document.getElementById('currenttime').innerHTML = time; 
},1000); 

,並確保YouTube播放器已經存在。