从`querySelectorAll`检查返回值的正确方法是什么?

时间:2015-09-17 18:53:13

标签: javascript dom document selectors-api

使用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
}

这是你怎么做的?

2 个答案:

答案 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

相关问题