我在此之前發佈並收到了一個很好的答案 - 但是在進一步使用時,代碼顯示Firebug中的錯誤,並且在測試中無法正常工作。Javascript在JSFiddle中工作 - 瀏覽器顯示爲「Undefined」
螢火蟲錯誤顯示:document.getElementsByName( 「licenseAgreement」)[0]是未定義的(線1)
任何幫助,將美妙。
我在此之前發佈並收到了一個很好的答案 - 但是在進一步使用時,代碼顯示Firebug中的錯誤,並且在測試中無法正常工作。Javascript在JSFiddle中工作 - 瀏覽器顯示爲「Undefined」
螢火蟲錯誤顯示:document.getElementsByName( 「licenseAgreement」)[0]是未定義的(線1)
任何幫助,將美妙。
無數問題。最可能的主要問題是您在加載頁面之前運行代碼,因此licenseAgreement對象尚未生效。以下是你應該改變的事情的總結。
第一個,由於幾個原因,此代碼在IE9之前無法在IE中工作。在IE9中沒有正確支持getElementsByName
,在IE9之前完全不支持addEventListener
。您必須在其他瀏覽器中使用IE和addEventListener
。有關代碼,請參閱下面的jsFiddle。
二,我建議你更改爲document.getElementById()
,給你的目標元素,而不是name
值id
值。這將爲您提供所需的確切元素,並且支持跨瀏覽器。請參閱下面的jsFiddle以瞭解如何使用getElementById
。
三,你不告訴我們的實際工作頁面,但我的猜測是,你正在運行的代碼添加一個eventListener
頁面加載完成這將意味着它無法找到前licenseAgreement對象,因爲它尚未被解析並加載到頁面中。只是一個猜測,因爲你沒有向我們展示失敗的實際頁面。您可以將初始化代碼移動到HTML主體的末尾,也可以在頁面加載完成後才能調用它,方法是掛鉤頁面加載事件並從那裏調用它。您的jsFiddle可能會工作,因爲您已經在jsFiddle中指定了您不希望代碼在加載頁面之前運行(jsFiddle功能)。
你有一個'name'屬性爲* licenseAgreement *的元素嗎? – alex
也許你的瀏覽器不支持'getElementsByName()'函數。 – tskuzzy
我不知道它是一個onload/domready的東西。也許當js被執行時,「licenseAgreement」dom El還沒有被解析。把它扔出去。也許包裝你的代碼,document.onload = function(/ *現有的代碼在這裏* /){};看看是否是這樣。 – seanh