2015-11-02 126 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> 
相关问题