在jQuery或JavaScript中获取两个字符串之间的文本

时间:2013-12-12 08:50:06

标签: javascript jquery

我试图获取2个字符串之间的内容并对它们进行操作。例如here您可以看到有两个$toc个变量。我想获得这两者之间的内容,并根据它制作一个内容表。如果您看到fiddle链接,则会看到它通过首先替换$toc获取所有h1,h2,h3,h4标记并制作内容列表,但我不会&# 39; t想要该内容表中的所有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 个答案:

答案 0 :(得分:1)

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());
    });
}

返回

  

Werkwijze
  标题2
  标题3
  标题4
  Kwaliteitsregistraties

     
     

目标
  理事会成员   MGMT
  IT
  范围
  环境
  质量
  健康

现在你可以用它做其他事情了。

希望你明白。