为了账号安全,请及时绑定邮箱和手机立即绑定

getElementById返回null?

/ 猿问

getElementById返回null?

慕的地8271018 2019-10-19 17:09:20

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


我最初是在最后一次加载javascript的,以确保无需担心onload事件。我也尝试使用onload事件。这很诡异。任何想法或帮助将不胜感激。


查看完整描述

3 回答

?
慕斯卡3215842

原因可能是:

  1. 无效的HTML语法(某些标记未关闭或类似错误)

  2. 重复的ID-有两个具有相同ID的HTML DOM元素

  3. 也许您试图通过ID获取的元素是动态创建的(由ajax加载还是由脚本创建)?

请发布您的代码。


查看完整回答
反对 回复 2019-10-19
?
Cats萌萌

还请注意如何执行页面上的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);


查看完整回答
反对 回复 2019-10-19
?
达令说

可能有很多原因导致document.getElementById无法正常工作


您的ID无效


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,至少应返回第一个元素


查看完整回答
反对 回复 2019-10-19

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信