正在将HTML NodeList读取到数组中

Reading an HTML NodeList into an array

本文关键字:数组 读取 NodeList HTML      更新时间:2023-09-26

下面的示例代码当前获取一个HTML页面,并尝试将其读取到数组中。AJAX运行得很好,我可以成功地获得一个节点列表对象。有可能以某种方式将此页面读取为数组而不是单个对象吗?最终,当我在下面的for循环中尝试时,我需要单独拉出这个数组的每个成员:

$.ajax({
 url: "/thePageToScrape.html",
 dataType: 'text',
 success: function(data) {
      var elements = $("<div>").html(data)[0].getElementsByTagName("body");
      for(var i = 0; i < elements.length; i++) {
           var theText = elements.firstChild.nodeValue;
           // Do something here
      }
 }
});

如果你想要的,就像你在评论中所说的,就是把NodeList变成一个数组:

elements = Array.prototype.slice.apply(elements);

真的,仅此而已。

如果您使用JQuery,您可以使用获得主体正下方的每个节点的列表

var elements = $(data).children("body").children();

或每个具有的节点

var elements = $(data).children("body *");

然后你可以用对它们进行循环

$.each(elements, function(index, value) {
  var text = this.text()
//..do something with text
});

看起来$.parseHTML()方法完全符合您的要求:

描述:将字符串解析为DOM节点数组。

var arrElements = $.parseHTML(data);