我试图查看.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
有趣的是,一旦我取消了对myimg的注释,.hasAttribute('src');就不再为null,.hasAttribute('src');愉快地返回了一个布尔值。
由于.getElementById()似乎没有找到注释掉的HTMLElements,所以如何检索注释掉HTMLElements?
我试过:
.getElementById()工作,例如通过尝试console.log(document.getElementById("theimg").src);.getElementById(),它简单地说“如果没有具有给定id的元素,则此函数返回不在文档中的
null...Elements由getElementById搜索。”
但是,注释掉的文本肯定是文档的一部分!
搜索,所以我找到了关于访问隐藏表单的问题,但它没有回答我的问题。
发布于 2014-08-01 05:36:23
是的,这很正常。尽管您的问题很荒谬,但它需要一个真正的答案:您注释掉的任何内容都会作为注释节点插入到DOM中,而不算作标记。注释是nothing,就像隐藏的表单元素:第一个不是DOM节点,而是注释数据。第二个是真正的DOM节点,如果您将CSS应用到它,比如display: block,它就会像其他任何东西一样出现在页面上。
我认为这个问题很荒谬,因为它是HTML标记最基本的规则之一。HTML是有用的,如果你把它注释掉,它什么也不做,对任何人来说,只有当你查看源代码时,它才不存在。
发布于 2014-08-01 05:50:53
console.log()方法中有一个错误
您应该将字符串连接起来,只需在字符串和变量之间添加一个+。
我像这样测试了它,它起了作用
<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>https://stackoverflow.com/questions/25073456
复制相似问题