我有一个问题。想象一下,我们有这样的 html 文档:
<html>
<head>
</head>
<body>
<p id="1">Hi</p>
</body>
</html>
当我写document.getElementById("1").__proto__;
时 - 我得到了HTMLParagraphElement对象。它是 p 对象原型链(HTMLParagraphElement--> HTMLElement --> Element--> Node-->...(中的第一个原型对象。由于 Node 对象位于此链中,因此其所有属性和方法都可用于 HTMLParagraphElement 对象。当我在写document.getElementById("1").__proto__.parentNode;
浏览器给我
未捕获的类型错误:非法调用。什么意思?我怎样才能知道这个 HTMLParagraphElement 对象到底在哪里连接到 BOM?例如,如果我正在编写变量 x=10;- 它是一个对象,它连接到窗口对象的根目录 (window.x;(。我想清楚地了解物料清单的结构。
如果需要访问元素的 parentNode,则应直接执行以下操作:
document.getElementById("1").parentNode
上面的行将返回对<body>
节点的引用,并且适用于向上遍历 DOM。
否则
document.getElementById("1").__proto__.parentNode
这意味着您正在尝试获取类/类型HTMLParagraphElement
的 parentNode,它不是一个元素,而是一种元素类型:元素类型没有父节点。
更合适的__proto__
是:
document.getElementById("1").__proto__.__proto__
上面的行将为您提供HtmlElement
类,尽管这不是很有用。
关于var x
,应该注意的是,javascript中定义的变量不会附加到DOM上,全局变量会添加到window
。 window
通过 window.document
连接到 DOM ,简而言之,只需键入document....
命令即可访问。