【问题标题】:search for multiple text strings in a div and remove html characters在 div 中搜索多个文本字符串并删除 html 字符
【发布时间】:2014-07-25 17:07:12
【问题描述】:

所以我有一个格式错误的 div,其中包含一堆带有 <p>, <font> 的内联 CSS 和其他老式标签。我需要抓取 2 个文本字符串并将它们放在页面上方的单独 div 中。

具体来说,在下面的 HTML 中,我需要抓取单词“CONDITION:”之后的文本 但我不想要 HTML。所有页面上的实际文本不同,但 HTML 相同。

<div class="content" id="content" style="display: block;">
    <p></p>
    <p align="center">
        <strong>
            <u>
                <font size="5" face="Arial Black" color="#990000">ONE NICE</font>
            </u>
        </strong>
    </p>
    <p align="center">
        <strong>
            <font size="5" face="Windings" color="#000040">MICHELIN</font>
        </strong>
    </p>
    <p align="center">
        <strong>
            <font size="5" color="#000040">ENERGY MXV4 S8</font>
        </strong>
    </p>
    <p align="center">
        <strong>
            <font size="5" face="Arial Black">215/55/17</font>
            <font size="5" face="Arial, Helvetica, sans-serif"><br/>93V</font>
        </strong>
    </p>
    <p align="center">
        <font face="Arial Black">
            <strong>
                <font color="#990000"><u>CONDITION</u> :</font>
            </strong>
            <br/>
        </font>
        <font size="2" face="Arial, Helvetica, sans-serif">
            <strong>Approximate tread: 8-9/32<br>About 80-90% of tread life left</strong>
        </font>
    </p>
    <p></p>
</div>

【问题讨论】:

    标签: javascript jquery search find


    【解决方案1】:

    这是我的解决方案http://jsfiddle.net/Yqsr3/

    $(function () {
       var conditionElem = $('font');
        conditionElem = $.grep(conditionElem, function (e, i){
           return $(e).find('u').text() === "CONDITION"; 
        });
        var description = $(conditionElem).next().text();
        console.log(description);
    });
    

    【讨论】:

      【解决方案2】:

      这段代码应该可以解决问题。

      var found = $('.content').find('p').each(function(index, p){
          if($(this).text().indexOf('CONDITION') != -1){
              console.log($(this).find('font').last().text());
          }
      });
      

      【讨论】:

      • 如果这个页面上有很多 p 标签,你找到这个特定标签的方法是最有效的吗?如果我们知道这个 p 标签总是存在于 Content div 中,也许您可​​以使用该容器更有效地定位它?
      • 哦,当然!我只是向您展示如何在此容器中找到该文本部分...现在编辑我的答案。
      【解决方案3】:

      parsing HTML with regex说“不”!这是另一种方法,简单而优雅:

      var text = $('p[align]:last').text();
      console.log(text.replace('CONDITION :', ''));
      

      显示:大约胎面:8-9/32大约 80-90% 的胎面寿命 左边。见fiddle.

      更新:

      由于页面上有多个内容 div,我将代码修改如下:

      var texts = [];
      $('div.content').each(function() {
          texts.push($('p[align]:last font:last', this).text());
      });
      

      查看更新的fiddle

      【讨论】:

      • 我认为这行不通,因为页面上还有其他 HTML。我发布的 div 是页面上许多内容部分之一。所以定位正确的 p[align]:last 是行不通的。有什么替代建议吗?我们确实知道此内容始终存在于 Content div 中。
      • @Mattman,你检查过代码吗?任何答案有用吗?如果是,您能否将其标记为已接受?
      猜你喜欢
      • 2015-11-05
      • 1970-01-01
      • 2012-10-31
      • 2018-05-05
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 2023-02-21
      • 1970-01-01
      相关资源
      最近更新 更多