1

我正在尝试将具有特定类的所有 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);

导致一个数组填充了许多对象中的许多对象,这些对象只填充了整数。 chrome控制台截图

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

4

1 回答 1

2

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

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

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

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

于 2012-06-26T14:48:40.047 回答