我正在尝试获取2个字符串之间的内容并对其进行操作。例如,here您可以看到有两个$toc变量。我想要获得这两者之间的内容,并根据此内容制作一张表格。如果您看到fiddle链接,您会看到它正在使用所有h1,h2,h3,h4标签并通过替换第一个$toc来制作目录,但我不希望该列表中的所有H标签内容。我只需要这两个$toc字符串之间的H标签。我怎样才能做到这一点?

我尝试了什么

function createTOC(elements) {

    var tocString = '';

    for (var i = 0, len = elements.length; i < len; i++) {
      tocString += elements[i].outerHTML;
    }
    var $body = $('body');
    var html = $body.html();
    var newHtml = html.replace('$toc', tocString);
    $body.html(newHtml);
}
var $tocElements = $('h1, h2, h3, h4');
createTOC($tocElements);

最佳答案

1)找到包含文本$toc的元素

var listOfTocs = $('p:contains("$toc")');


2)现在使用nextUtil()获取这些p标记之间的所有内容。

var foul = $(listOfTocs[0]).nextUntil(listOfTocs[1]);


3)现在使用elements(h1,h2,h3,h4)过滤这些元素

var goal = foul.filter(elements);


4)只需迭代即可查看其值

$.each(goal, function (i, v) {
    console.log($(v).text());
});


最后,

function createTOC(elements) {
    var listOfTocs = $('p:contains("$toc")');
    var foul = $(listOfTocs[0]).nextUntil(listOfTocs[1]);
    var goal1 = foul.filter(elements);
    $.each(goal1, function (i, v) {
        console.log($(v).text());
    });

    var goal2 = $(listOfTocs[1]).nextUntil($("body").last()).filter(elements);
    $.each(goal2, function (i, v) {
        console.log($(v).text());
    });
}


退货


  韦克维兹
  标题2
  标题3
  标题4
  Kwaliteits注册
  
  
  
  目标
  理事会成员
  MGMT
  它
  范围
  环境
  质量
  养生


现在,您可以使用它进行其他操作。

希望你能理解。

07-24 18:54
查看更多