【问题标题】:DOM Uncaught TypeError: Cannot read property 'children' of undefinedDOM 未捕获类型错误:无法读取未定义的属性“子项”
【发布时间】:2019-08-20 06:35:52
【问题描述】:

我正在尝试访问 DOM 深处的一个元素。

因此,我使用以下代码导航 DOM 以到达该元素。

    var body = document.body;
    var bodychild5 = body.children[5];
    var container = bodychild5.children[0];
    var mainright = container.children[1];
    var rbslip = mainright.children[1];
    var slip = rbslip.children[1];
    var sliplayer = slip.children[3];
    var innerpadding = sliplayer.children[1];
    var bsbody = innerpadding.children[0];
    var formclass = bsbody.children[0];
    var gslip = formclass.children[0];
    var almostinput = gslip.children[8];
    var input = almostinput.children[1];

我得到了元素,但是当我运行代码时,我得到一个 Uncaught TypeError: Cannot read property 'children' of undefined when it get to gslip。

【问题讨论】:

  • 可能文档还没有完成加载,所以为window.addEventListener('load', function() { /* your code here */ })添加一个事件处理程序
  • @Icepickle,您的代码有效。

标签: javascript


【解决方案1】:

节点bsbody 可能没有子节点。

a) 最好添加id / class 属性,以便使用document.getElementById()document.getElementsByClassName()

b) 这个answer 演示了如何通过xpath 选择节点(可以从网络浏览器的F12 工具中复制)。

【讨论】:

  • ~bsbody.children[0]~ 有子节点我花时间检查它,它确实有子节点。
  • @IvakaZakuri Cannot read property 'children' of undefined 表示有东西typeof "undefined"...表示前面的赋值没有抓到任何节点。对于需要 1 条指令的事情,您使用 13 条指令使一个简单的问题变得过于复杂。例如:console.debug(document.getElementById('answer-57564618'));.
  • ,我发现了问题。问题是,文档还没有完成加载。
猜你喜欢
  • 1970-01-01
  • 2016-08-24
  • 1970-01-01
  • 2021-12-22
  • 2015-01-06
  • 2017-07-26
  • 2019-02-26
相关资源
最近更新 更多