我有一个question.Imagine,我们有这样的html文档:
<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的结构有一个清晰的了解。
发布于 2016-07-02 22:30:19
如果需要访问元素的parentNode,则应直接执行以下操作:
document.getElementById("1").parentNode上面的行将返回对<body>节点的引用,并且适合遍历DOM。
否则,
document.getElementById("1").__proto__.parentNode这意味着您正在尝试获取类/类型的parentNode,它不是一个元素,而是一种元素的类型:元素的类型没有parentNodes。
与__proto__有关的更合适的方法是:
document.getElementById("1").__proto__.__proto__上面的行将为您提供HtmlElement类,尽管这并不是很有用。
关于var x,应该注意到javascript中定义的变量没有附加到DOM中,全局变量被添加到window中。window通过window.document连接到DOM,简而言之,只需输入document....命令即可访问DOM。
https://stackoverflow.com/questions/38164945
复制相似问题