2014-10-04 43 views
0

我不斷收到我的代碼錯誤。無法讀取null的屬性'addEventListener'錯誤

我想檢查按鈕是否在頁面上,如果是這樣繼續。該按鈕在加載時不在頁面上,而是在提交後替換表單的外部頁面上。然後,謝謝你的HTML頁面通過ajax加載。

var reloadButton = document.getElementById('reloadPage'); 

if (reloadButton.length > 0) { 

    function reloadPage() { 

     location.reload(); 

    } 

    if (reloadButton.addEventListener) { 

     reloadButton.addEventListener('click', reloadPage, false); 

    } else { 

     reloadButton.attachEvent('onclick', reloadPage); 

    } 

} 

我明白,如果元素如果不存在,你會得到一個錯誤,但是爲什麼我創建了一個if語句。我應該以另一種方式檢查元素嗎?

回答

0

reloadButton.length正試圖調用某個可能存在或可能不存在的屬性。如果它不可用,則嘗試訪問該屬性會導致錯誤。你可以簡單地做:

if (reloadButton) 
+0

謝謝@kellycode。這就解決了我的問題,只要讓錯誤消失。現在該按鈕不起作用,因爲它是一個外部頁面,它在表單提交之後用一個感謝消息替換了它的表單,而最初的表單並未加載該文檔。我如何解決這個問題,無需將內部腳本標記添加到加載並保留我的外部js文件的代碼的thank-you.html中? – 2014-10-05 06:03:38

+0

這個問題似乎並不清楚。如果您的表單提交顯示不同的「謝謝」頁面。看起來,在您的「謝謝」頁面上,您並不是真的想要重新加載頁面,而是希望鏈接返回到原始頁面。或者,您可以使用AJAX提交表單,並且不會離開頁面,只需顯示「謝謝」您的成功回報,我認爲這是對錶單提交更清晰的方法,因爲您永遠不會丟失頁面狀態。 – kellycode 2014-10-06 15:24:04

相關問題