使用querySelectorAll
时,检查它是否返回任何元素的正确方法是什么?
它会返回无法检查false
的内容。这似乎不起作用:
var elements = document.querySelectorAll('.class');
if (elements) {
// doesn't work, `elements` is always true
}
现在我通过.length
属性进行以下检查:
var elements = document.querySelectorAll('.class');
if (elements.length) {
// querySelectorAll returned DOM elements
}
这是你怎么做的?
答案 0 :(得分:5)
这是正确的。
document.querySelectorAll('.class')
返回非实时Node List,这将始终是 truthy 。
因此,您需要使用length
计算列表中的项目,以确定是否有超过0项。
答案 1 :(得分:3)
是。 querySelectorAll
将返回array-like object,其中包含一个length属性(实际对象为NodeList)。
所以,
if(elements.length > 0) {
// you have elements
}
// and
if(element.length === 0) {
// you don't have elements
}
执行if(elements)
的问题是[]
是真实的,这意味着它将始终返回true:
!![] === true
。