gpt4 book ai didi

javascript - 如果注释掉,.getElementById() 找不到 HTMLElements - 这是正常行为吗?

转载 作者:行者123 更新时间:2023-12-03 12:08:31 25 4
gpt4 key购买 nike

我试图查看 .hasAttribute() 方法返回的类型。我有以下代码:

HTML:
<!--
<img id="theimg" src="http://placehold.it/100x100">
-->

JS:
var myimg = document.getElementById("theimg");
var result = myimg.hasAttribute('src');
console.log(typeof result);

我的控制台不断抛出此错误:Uncaught TypeError: Cannot read property 'hasAttribute' of null

有趣的是,一旦我取消注释 HTML,myimg 就不再为 null,并且 .hasAttribute('src'); 愉快地返回了一个 bool 值。

由于 .getElementById() 似乎无法找到注释掉的 HTMLElements,如何检索注释掉的 HTMLElements?

我已经尝试过:

  1. 修改代码以查看是否可以强制 .getElementById() 工作,例如通过尝试 console.log(document.getElementById("theimg").src);
  2. 谷歌搜索
  3. 阅读 the MDN Documentation.getElementById() 上,它只是表示

"If there is no element with the given id, this function returns null...Elements not in the document are not searched by getElementById."

但是注释掉的文本肯定是文档的一部分!

搜索我发现this question about accessing a hidden form但它没有回答我的问题。

最佳答案

是的,这是正常的。尽管你的问题很荒谬,但它值得一个真正的答案:你注释掉的任何内容都会作为注释节点插入到 DOM 中,并且不算作标记。注释与隐藏的表单元素完全不同:第一个不是 DOM 节点,而是注释数据。第二个是真正的 DOM 节点,如果您对其应用 CSS(例如 display: block),它将像其他任何东西一样显示在页面上。

我称这个问题很荒谬,因为它是 HTML 标记最基本的规则之一。 HTML 会做一些事情,如果您将其注释掉,它不会执行任何操作,并且就任何人而言,除非您查看源代码,否则它不存在。

关于javascript - 如果注释掉,.getElementById() 找不到 HTMLElements - 这是正常行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25073456/

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