2015-11-02 97 views
0

javascript document.getElementById函數有問題。問題是,除Internet Explorer之外的每個瀏覽器都出現document.getElementById爲null的錯誤。getElementById在Internet Explorer中返回null

對於實施例的Firefox:

類型錯誤:的document.getElementById(...)爲空

的的getElementById用功能出現按鈕的聲明之後,因此它不應該是一個問題,該函數不知道ID元素是什麼。

這是腳本與有關代碼的摘錄:

<html> 
<head> 
<title>Timeline</title> 
<meta charset="utf-8"> 
</head> 

<body> 
<form method="post" id="myform" onsubmit="window.location.reload();"> 
<input type="hidden" id="client_timestamp" name="client_timestamp" /> 
<button name= "subm_myform" type="submit" >Send My Time</button> 
</form> 

<script type="text/javascript"> 
// ------- where the error occurs ---------------- 
document.getElementById('subm_myform').style.visibility='hidden'; 
var mySync = setTimeout(function() {document.getElementById('subm_myform').click()} ,60000); 

</script> 
</body> 
</html> 

謝謝!

+1

'<按鈕名稱= 「subm_myform」>'/'的getElementById( 'subm_myform')' - 說不定IE合併了'name'和'ID '出於一些向後兼容的原因?我在你發佈的代碼中沒有帶'id =「subm_myform」'的元素。 – pawel

+1

你的按鈕有一個'subm_myform'的名字,而不是一個ID。如果IE沒有通過ID找到一個元素,它會試圖通過名稱來實現。至少在舊版本的IE中。(我們實際上必須將getElementByID函數填充到每個瀏覽器中,以便我們的一些代碼庫一次... _shudder_) –

回答

6

因爲你獲取DOM元素,看起來像你的DOM元素都有沒有任何id屬性。它應該是<button name= "subm_myform" type="submit" id="subm_myform" >Send My Time</button>

這是IE的'功能'。它們的實現getElementById最初搜索具有給定的id屬性的元素。如果找不到,則它將通過name屬性搜索元素。

如果您想通過名稱查找元素,請改爲使用getElementsByName()方法。

+1

感謝大家爲這些快速答案!我標記了這個問題,因爲它很廣泛,並解釋了爲什麼它在IE中工作。 – Borsi

2

沒有id subm_myform的表單元素,你有一個名字。修復了在代碼:

<button id= "subm_myform" type="submit" >Send My Time</button> 
0

<button name= "subm_myform" type="submit" >Send My Time</button> 

沒有ID,通過id試試這個

<button id="subm_myform" name="subm_myform" type="submit" >Send My Time</button> 
-4

的問題是你想獲得一個ID,但您沒有添加# 而另一個問題是你給它一個名稱屬性,你需要將其設置爲ID =「subm_myform」

嘗試

<button id= "subm_myform" type="submit" > 

document.getElementById('#subm_myform')。style.visibility ='hidden';

+1

這不是一個jQuery語句,而是香草JS。 #隱含在使用getElementById(); 正確的修復方法是使用按鈕上的ID,而不是使用名稱和希望。 –

+0

是的,你是對的。我沒有想到這一點,因爲我總是與jQuery合作。感謝提示 –

2

document.getElementById是不是想找name。 Internet Explorer不會崩潰很奇怪。也許它試圖找到與id找不到的名稱。

添加id到您的按鈕來解決這個問題:

<button name="subm_myform" id="subm_myform" type="submit" >Send My Time</button> 
相關問題