getElementById 返回 null?

IT技术 javascript getelementbyid
2021-02-08 03:03:57

document.getElementById('id of div that definately exists') 返回空值。

我最初是最后加载 javascript 的,以确保我不需要担心 onload 事件。我也尝试使用 onload 事件。这是非常可怕的。任何想法或帮助将不胜感激。

3个回答

还要注意如何在页面上执行 js。例如,如果您执行以下操作:

(function(window, document, undefined){

  var foo = document.getElementById("foo");

  console.log(foo);

})(window, document, undefined); 

这将返回 null,因为您将在加载之前调用文档。

更好的选择..

(function(window, document, undefined){

// code that should be taken care of right away

window.onload = init;

  function init(){
    // the code to be called when the dom has loaded
    // #document has its nodes
  }

})(window, document, undefined);
感谢 +1 提醒这也可能是我可能忽略的可能性。
2021-04-01 03:03:57

它可能由以下原因引起:

  1. 无效的 HTML 语法(某些标签未关闭或类似错误)
  2. 重复 ID - 有两个具有相同 ID 的 HTML DOM 元素
  3. 也许您尝试通过 ID 获取的元素是动态创建的(由 ajax 加载或由脚本创建)?

请贴出你的代码。

#2 实际上不会产生,null而只会产生具有该 id 的两个元素中的第一个。
2021-03-27 03:03:57
对我来说,我在测试时从控制台清除了一个脚本错误。在错误被修复之前,我无法获得 id
2021-04-04 03:03:57
#3 我的情况!
2021-04-08 03:03:57
#1 也是我的答案。我的 <canvas id="derp"></canvas> 在 ng-repeat 中。
2021-04-09 03:03:57
#1 可能与需要打开和关闭标签的元素的单个标签一样微妙。例如:<datalist id="foo" />vs <datalist id="foo"></datalist>.
2021-04-12 03:03:57

可能有很多原因document.getElementById不起作用

  • 您的身份证件无效

    ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后面可以跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") 、冒号 (":") 和句点 (".")。(资源:HTML 中 id 属性的有效值是什么?

  • <meta>在标题中使用了一些已用作名称的ID (例如版权、作者...),这看起来很奇怪,但发生在我身上:如果您使用的是 IE,请查看(资源:http://www.phpied .com/getelementbyid-description-in-ie/ )

  • 您的目标是框架或 iframe 内的元素。在这种情况下,如果 iframe 在父级的同一域中加载页面,则应contentdocument在查找元素之前定位该页面(资源:在框架内调用特定 id

  • 当节点没有有效地加载到 DOM 中时,您只是在寻找一个元素,或者可能是一个简单的拼写错误

我怀疑你两次或更多次使用相同的 ID:在这种情况下document.getElementById应该至少返回第一个元素

感谢 iframe 提示,帮了我很多忙!
2021-03-27 03:03:57