首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果注释掉了,HTMLElements就不会被.getElementById()找到--这是正常行为吗?

如果注释掉了,HTMLElements就不会被.getElementById()找到--这是正常行为吗?
EN

Stack Overflow用户
提问于 2014-08-01 05:33:49
回答 2查看 208关注 0票数 0

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

代码语言:javascript
复制
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

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

由于.getElementById()似乎没有找到注释掉的HTMLElements,所以如何检索注释掉HTMLElements?

我试过:

  1. 按摩代码以查看是否可以强制.getElementById()工作,例如通过尝试console.log(document.getElementById("theimg").src);
  2. 谷歌
  3. 阅读MDN文档 on .getElementById(),它简单地说

“如果没有具有给定id的元素,则此函数返回不在文档中的null...Elements由getElementById搜索。”

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

搜索,所以我找到了关于访问隐藏表单的问题,但它没有回答我的问题。

EN

回答 2

Stack Overflow用户

发布于 2014-08-01 05:36:23

是的,这很正常。尽管您的问题很荒谬,但它需要一个真正的答案:您注释掉的任何内容都会作为注释节点插入到DOM中,而不算作标记。注释是nothing,就像隐藏的表单元素:第一个不是DOM节点,而是注释数据。第二个是真正的DOM节点,如果您将CSS应用到它,比如display: block,它就会像其他任何东西一样出现在页面上。

我认为这个问题很荒谬,因为它是HTML标记最基本的规则之一。HTML是有用的,如果你把它注释掉,它什么也不做,对任何人来说,只有当你查看源代码时,它才不存在。

票数 2
EN

Stack Overflow用户

发布于 2014-08-01 05:50:53

console.log()方法中有一个错误

您应该将字符串连接起来,只需在字符串和变量之间添加一个+。

我像这样测试了它,它起了作用

代码语言:javascript
复制
<img id="theimg" src="http://placehold.it/100x100"> 
<script type="text/javascript">
var myimg = document.getElementById("theimg");
var result = myimg.hasAttribute('src');
console.log("type is "+ result);
</script>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25073456

复制
相关文章

相似问题

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