如果元素不存在,为什么instanceof HTMLElement返回false?

时间:2019-02-01 05:43:26

标签: javascript

首先,我没有键盘,只需通过jsconsole应用检查我的手机即可。其次,我得到了一个像这样的简单代码段:

const foo = document.getElementsByClassName('bar');

foo instanceof HTMLCollection // true
foo[0] instanceof HTMLElement // false

我只是想知道为什么foo [0]在元素不存在时返回false。是由未定义元素引起的吗?还是什么?有没有提到这个?请给我一些报价,谢谢!

2 个答案:

答案 0 :(得分:0)

getElementsByClassName将返回一个NodeList,它是一个HTMLCollection。因此,如果没有给定类的元素,您仍将获得一个空的节点列表。

但是,当您尝试访问oth元素时,由于该元素为空列表,您将得到undefined kaiido 的正确建议)。因此,您得到false

以下是示例表示形式:

var test = document.getElementsByClassName('test');

console.log(Object.prototype.toString.call(test))
console.log(Object.prototype.toString.call(test[0]))

答案 1 :(得分:0)

也许您的问题是“ HTMLCollection” /“ HTMLElement”无关紧要。

const arr = []
arr // []
arr[0] // undefined
arr[0] instanceof HTMLElement // false