jQuery和Array isArray无法正常工作?

时间:2014-03-06 22:33:37

标签: javascript jquery

jQuery和数组isArray无法正常工作

如果我这样做:

var tags = document.getElementsByTagName('div');

jQuery.isArray(tags) // returns false
Array.isArray(tags)  // returns false

function isArray(object){
  return typeof object === "object" && object.length > -1;
}

isArray(tags) // return true

此问题导致我的网站出现实际错误:

在我的网站上,我有一个表单标签,输入名称为“plan”。

如果我只有一个输入名称“plan”,它将返回一个无数组。

但如果我有两个输入并且都有名称“plan”,它将返回一个数组。

我使用jQuery.isArray检查它是否是一个数组但是被迫放弃使用jQuery isArray。

人们评论说它是节点列表,但nodelist的用法与数组完全相同。那么在什么情况下你真的想避免它像数组一样使用?

1 个答案:

答案 0 :(得分:5)

不,它运作正常。 getElementsByTagName返回一个nodelist - 一个array-LIKE对象,但不是一个实际的数组,所以jQuery返回false是正确的。

您的函数返回true,因为它正在测试作为对象的类型(nodelist是一个对象)并且它有一个长度(nodelist有一个长度)。

如果您真的想要使用foo instanceof Array测试数组。