gpt4 book ai didi

javascript - .getElementById() 和 .innerHTML() 如何在 HTML 和 DOM 之间建立桥梁?

转载 作者:搜寻专家 更新时间:2023-11-01 04:08:22 25 4
gpt4 key购买 nike

多年来我一直在编写 Javascript,但直到现在我才意识到我并不完全理解这些“HTML-y”方法实际上是如何与 DOM 交互的。

我的假设是,当 HTML 被解释为 DOM 时,浏览器会保留关于哪个 HTML 元素成为哪个 DOM 节点的引用。

所以对于 .getElementById 当你选择一个元素时,浏览器通过引用返回相关节点。为什么不直接执行 .getNodeById 然后更正确?

我的假设是 .innerHTML 在运行时被浏览器解释为 DOM。但是,在 IE7 等较旧的浏览器中,.innerHTML 不能用于创建表节点。这对我来说表明它最初只是为了修改现有节点的文本属性,但它的存在似乎很奇怪,我们不只是使用 .innerText

我想我只是对一些 Javascript 历史感到困惑。

最佳答案

嗯,问题是,像 .innerHTML.getElementById 这样的东西根本不是真正的 JavaScript 对象。它们就是语言规范所称的“宿主对象”——它是 FFI 的一种形式。在大多数浏览器中调用 .getElementById 时发生的事情是字符串从 JS 字符串编码为 DOM 字符串,然后传递给 C++ 代码。

事实上,它们被允许拥有几乎任何他们喜欢的语义——语言不保证它们的行为方式(对于其他 DOM 对象,如计时器和 XHR 也是如此)。

关于javascript - .getElementById() 和 .innerHTML() 如何在 HTML 和 DOM 之间建立桥梁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29866145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com