将类的所有元素的内容放入数组..为什么我会收到这些错误消息

时间:2012-06-26 14:46:28

标签: javascript jquery

我试图将具有特定类的所有div的文本加载到数组中,但是这个

var temp = $('.theClass').text();
    temp = temp.toArray();
    console.log(temp);

不断给我错误

Uncaught TypeError: Object has no method 'toArray'

var tempArr = [];
var temp = $('.theClass').text();

for (var t in temp){

    tempArr.push(t);
}
console.log(tempArr);

导致数组中填充了许多很多对象,这些对象只是用整数填充。 screenshot of chrome console

可以找到有关如何正确执行此操作的说明here,但我想知道是否有人可以向我提供解释为什么我会收到这些错误的说明。谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用map迭代匹配集的每个元素并返回一些数据(在本例中为文本)。然后,您可以使用get将生成的jQuery对象转换为实际数组:

var arr = $('.theClass').map(function () {
    return $(this).text();
}).get();

您的第一次尝试失败,因为text方法返回一个字符串,而字符串没有toArray方法(因此您的“对象没有方法”错误)。

您的第二次尝试失败,因为您使用for...in循环遍历字符串。此循环遍历字符串的字符。每次迭代t都分配了字符的索引,因此最终得到一个数组,字符串中的每个字符都有一个元素。您永远不应该使用for...in循环来迭代除对象属性之外的任何内容,即使这样,您也应该始终包含hasOwnProperty项检查。