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

标签 javascript jquery

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

结果是一个数组,里面充满了对象中的许多对象,这些对象只是用整数填充。 screenshot of chrome console

有关如何正确执行此操作的说明,请参见 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/

相关文章:

javascript - 将导航栏转换为水平视差网站上的固定标题

javascript - 如何使用 JQuery 获取随机 id 的值?

javascript - WKWebview - Javascript 和 native 代码之间的复杂通信

javascript - 保存 URI 不起作用

javascript - 当更改顺序为升序或降序时如何保留标记的元素

javascript - 在 d3 map 上显示文本和直接通过超链接

javascript - jQuery - 将 HTML 插入 div,然后获取插入的 HTML 的第一个子元素

php - 如何将 PHP 数组分配给 jQuery 数组?

javascript - 表 td 的 onchange 事件?

javascript - Chrome 扩展程序被 Etsy 屏蔽了?