首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是Chrome中的“未登录的TypeError:非法调用”?

什么是Chrome中的“未登录的TypeError:非法调用”?
EN

Stack Overflow用户
提问于 2016-07-02 22:22:39
回答 1查看 1.9K关注 0票数 0

我有一个question.Imagine,我们有这样的html文档:

代码语言:javascript
复制
<html>
  <head>
  </head>
  <body>
    <p id="1">Hi</p>
  </body>
</html>

当我编写document.getElementById("1").__proto__;时,我已经得到了HTMLParagraphElement对象。它是链中的第一个原型对象(HTMLParagraphElement-> HTMLElement --> Element--> Node-->.)P对象原型。由于Node对象位于这个链中,所以它的所有属性和方法都可以用于HTMLParagraphElement对象。当我写document.getElementById("1").__proto__.parentNode;时,浏览器会给我

Uncaught :非法调用。什么意思?我怎么知道这个HTMLParagraphElement对象到底在哪里连接到BOM呢?例如,如果我正在编写var x=10;-它是一个对象,它连接到窗口对象的根(window.x;)。我想对BOM的结构有一个清晰的了解。

EN

回答 1

Stack Overflow用户

发布于 2016-07-02 22:30:19

如果需要访问元素的parentNode,则应直接执行以下操作:

代码语言:javascript
复制
document.getElementById("1").parentNode

上面的行将返回对<body>节点的引用,并且适合遍历DOM。

否则,

代码语言:javascript
复制
document.getElementById("1").__proto__.parentNode

这意味着您正在尝试获取类/类型的parentNode,它不是一个元素,而是一种元素的类型:元素的类型没有parentNodes。

__proto__有关的更合适的方法是:

代码语言:javascript
复制
document.getElementById("1").__proto__.__proto__

上面的行将为您提供HtmlElement类,尽管这并不是很有用。

关于var x,应该注意到javascript中定义的变量没有附加到DOM中,全局变量被添加到window中。window通过window.document连接到DOM,简而言之,只需输入document....命令即可访问DOM。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38164945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档