2012-06-22 69 views
5

我對JS非常陌生,並且明白我的腳本可能很糟糕,但它在Safari和Chrome中都可以正常工作,而不是在Firefox中。Firefox中的「未定義」javascript錯誤

其中,我調用兩個函數來隱藏和顯示自定義Quicktime影片控制器,方法是在其頂部放置一個「遮罩」(我知道切換將是一個更優雅的解決方案,但我不能'沒有這樣的功能可以按我想要的方式工作)。無論如何,這是JavaScript的樣子:

function revealControls(){ 
     document.getElementById("controlsCover"); 
     controlsCover.style.display ="none" 
} 

function hideControls(){ 
     document.getElementById("controlsCover"); 
     controlsCover.style.display ="block" 
} 

我打電話與適用於各種不同的div鼠標事件,如這些功能:

<div id = "controls" onmouseout = "hideControls()"> 

Firefox是告訴我

"Error: controlsCover is not defined", 

我不知道如何將元素定義爲null。

任何幫助,將不勝感激。我相信這是非常簡單的事情 - 但我幾乎沒有使用Javascript的經驗。然而。

+0

如何赫克會下的Safari或Chrome這項工作..... – Sebas

+2

http://chat.stackoverflow.com/rooms/17/conversation/noob-javascript-resources HTTP://chat.stackoverflow .com/rooms/17/conversation/learn-javascript-videos http://stackoverflow.com/tags/javascript/info所有開始學習和獲取資源的好地方。遠離W3SCHOOLS !!!!! MDN是你的新朋友。 – rlemon

回答

6

您需要首先創建controlsCover變量來引用它。

當您第一次使用document.getElementById("controlsCover")時,這將返回一個HTML元素,您將其傳遞給要使用的變量。

如果取消註釋console.log - 您會看到變量內部是什麼。

function revealControls()  
{ 
    var controlsCover = document.getElementById("controlsCover"); 
    /* console.log(controlsCover) */ 
    controlsCover.style.display ="none" 
} 

function hideControls() 
{ 
    var controlsCover = document.getElementById("controlsCover"); 
    controlsCover.style.display ="block" 
} 
+0

因此,Chrome和Safari足夠聰明,可以在拋出「未定義」錯誤之前檢查變量是否以HTML元素的形式存在? – Amberlamps

+2

到達那裏比我快! @Amberlamps沒有看到你的完整代碼很難說爲什麼它可以在其他瀏覽器中工作, –

+0

@AbePetrillo - 我真的試過了:p – Glycerine

2

您需要document.getElementById返回值賦給controlsCover變量:

var controlsCover = document.getElementById("controlsCover"); 

修正將是:

function revealControls() { 
    var controlsCover = document.getElementById("controlsCover"); 
    controlsCover.style.display ="none" 
} 

function hideControls() { 
    var controlsCover = document.getElementById("controlsCover"); 
    controlsCover.style.display ="block" 
} 
0

試試這個:

var ele =document.getElementById("controlsCover"); 
ele.style.display = "none"; 
0

試試這個:

function revealControls()  
{ 
    var oControlsCover = document.getElementById("controlsCover"); 

    if (oControlsCover) { 
    oControlsCover.style.display ="none"; 
    } 
} 

function hideControls() 
{ 
    var oControlsCover = document.getElementById("controlsCover"); 

    if (oControlsCover) { 
    oControlsCover.style.display ="block"; 
    } 
}