我正在尝试将具有特定类的所有 div 的文本加载到一个数组中,但是这
var temp = $('.theClass').text();
temp = temp.toArray();
console.log(temp);
一直报错
未捕获的类型错误:对象没有方法“toArray”
和
var tempArr = [];
var temp = $('.theClass').text();
for (var t in temp){
tempArr.push(t);
}
console.log(tempArr);
结果是一个数组,里面充满了对象中的许多对象,这些对象只是用整数填充。
有关如何正确执行此操作的说明,请参见 here ,但我想知道是否有人可以向我解释为什么会出现这些错误。谢谢!
最佳答案
您可以使用 map
遍历匹配集合的每个元素并返回一些数据(在本例中为文本)。然后您可以使用 get
将生成的 jQuery 对象转换为实际数组:
var arr = $('.theClass').map(function () {
return $(this).text();
}).get();
您的第一次尝试失败,因为 text
方法返回一个字符串,而字符串没有 toArray
方法(因此您的“对象没有方法”错误)。
您的第二次尝试失败了,因为您正在使用 for...in
循环遍历字符串。此循环遍历字符串的字符。每次迭代 t
都被分配了字符的索引,因此您最终得到一个数组,字符串中的每个字符都有一个元素。您永远不应该真正使用 for...in
循环来迭代对象属性以外的任何内容,即使那样,您也应该始终包含一个 hasOwnProperty
检查。
关于javascript - 将类的所有元素的内容放入数组中。为什么我会收到这些错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11209920/