【问题标题】:getElementById returns null except in Internet ExplorergetElementById 返回 null,但在 Internet Explorer 中除外
【发布时间】:2015-11-02 10:54:21
【问题描述】:

我的 javascript document.getElementById 函数有问题。问题是,除了 Internet Explorer 之外,每个浏览器都会收到 document.getElementById 为空的错误。

例如火狐:

TypeError: document.getElementById(...) is null

getElementById-Function 出现在按钮声明之后,因此函数不知道 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>

谢谢!

【问题讨论】:

  • &lt; button name= "subm_myform"&gt; / getElementById('subm_myform') - 由于某些向后兼容性的原因,IE 可能将 nameid 混为一谈?我在您发布的代码中没有带有id="subm_myform" 的元素。
  • 您的按钮有一个namesubm_myform,而不是一个ID。如果 IE 没有按 ID 查找元素,它会尝试按名称查找。至少在旧版本的 IE 中。 (实际上,我们必须在每个浏览器中为我们的某些代码库添加一次 getElementByID 函数……shudder

标签: javascript html


【解决方案1】:

因为您正在通过 id 获取 DOM 元素,并且看起来您的 DOM 元素没有任何 id 属性。应该是&lt;button name= "subm_myform" type="submit" id="subm_myform" &gt;Send My Time&lt;/button&gt;

这是 IE 的“功能”。他们对getElementById 的实现最初搜索具有给定id 属性的元素。如果没有找到,它会通过 name 属性搜索元素。

如果您想按名称查找元素,请改用getElementsByName() 方法。

【讨论】:

  • 感谢大家的快速解答!我标记了这个问题,因为它内容广泛并解释了为什么它在 IE 中有效。
【解决方案2】:

没有 id 为 subm_myform 的表单元素,您有一个带有名称的表单元素。在代码中将其修复为:

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

【讨论】:

    【解决方案3】:

    document.getElementById 不应该寻找name。奇怪的是 Internet Explorer 没有崩溃。如果用id 找不到,它可能会尝试用名称查找。

    id 添加到您的按钮以解决问题:

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

    【讨论】:

      【解决方案4】:

      你的

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

      没有id,试试这个

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

      【讨论】:

        【解决方案5】:

        问题是你想得到一个 id 但你没有添加 # 另一个问题是你给它一个 name 属性,你需要将它设置为 id="subm_myform"

        试试

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

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

        【讨论】:

        • 这不是 jQuery 语句,而是 vanilla JS。 # 隐含在使用 getElementById();正确的解决方法是在按钮上使用 ID,而不是使用名称和希望。
        • 是的,你是对的。我没有考虑过这一点,因为我一直在使用 jQuery。感谢提示
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 2011-07-13
        相关资源
        最近更新 更多