【问题标题】:Get text wrapped into <b> and separated by <br> using jquery使用 jquery 将文本包装到 <b> 并由 <br> 分隔
【发布时间】:2016-10-19 09:41:53
【问题描述】:

我以 html 字符串格式接收来自服务的输出,如下所示:

"<html>↵<h1>↵Example : ↵<br>Explanation↵</h1>↵<hr>↵<b>key1 :  ABCD <br>key2 : 2016-10-18-18-38-29<br>Output: /acddfd/example</b>↵</html>↵"

然后我解析html得到标签&lt;b&gt;如下:

var input="<html>↵<head>↵<h1>↵Example : ↵<br>Explanation↵</h1>↵<hr>↵<b>key1 :  ABCD <br>key2 : 2016-10-18-18-38-29<br>Output: /acddfd/example</b>↵</html>↵";
var parsed= $.parseHTML(input);

然后我发现解析为一个html标签数组:

<b>key1 :  ABCD <br>Date : 2016-10-18-18-38-29<br>Output: /acddfd/example</b>

现在我需要获取 Date 的值以进行进一步操作。
谁能帮助我使用 js/jquery 获取 Date 的值(例如2016-10-18-18-38-29)?

【问题讨论】:

  • 我认为 jQuery 不会有太大帮助,因为它是用来在 dom 中导航的。由于您的日期没有包含在可以通过 css 类或 Id 识别的 HTML 标记中,因此您不妨在纯字符串 input 上使用正则表达式

标签: javascript jquery html text


【解决方案1】:

使用这个正则表达式

var Date= str.match(/(\d{4})-(\d{2})-(\d{2})-(\d{2})-(\d{2})-(\d{2})/g);

【讨论】:

    【解决方案2】:

    您可以使用Node.nextSibling 属性来获取元素后的同级文本。它返回Date : 2016-10-18-18-38-29,您需要从字符串中删除其他部分。

    使用String.prototype.split() 获取: 字符后的字符串。

    $(parsed).find("br:first")[0].nextSibling.textContent.split(":")[1].trim();
    

    var date = $("b > br:first")[0].nextSibling.textContent.split(":")[1].trim();
    console.log(date);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <b>key1 :  ABCD <br>Date : 2016-10-18-18-38-29<br>Output: /acddfd/example</b>

    【讨论】:

    • 您好,我在无法读取未定义(…)的属性“nextSibling”时遇到错误。
    • @kulfi 你用过$(parsed).find("br:first")[0].nextSibling吗?
    • @kulfi Javascript 变量区分大小写。 $(Parsed)$(parsed) 不同
    • 我使用如下 $(parsed).find("br:first")[0].nextSibling.textContent.split(":")[1].trim();
    • @kulfi 代码是正确的并且在sn-p中工作。在控制台中检查$(parsed).find("br:first")[0] 的结果。
    【解决方案3】:

    var myString = "<b>key1 :  ABCD <br>Date : 2016-10-18-18-38-29<br>Output: /acddfd/example</b>";
    
    //Break string from date
    var myDate = myString.substr(myString.indexOf("Date : ")+"Date : ".length);
    
    //Remove string after date
    myDate = myDate.substr(0,myDate.indexOf("<br>"));
    console.log(myDate);
    &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

    【讨论】:

      【解决方案4】:

      你可以使用下面的代码

      var input="<html>↵<head>↵<h1>↵Example : ↵<br>Explanation↵</h1>↵<hr>↵<b>key1 :  ABCD <br>key2 : 2016-10-18-18-38-29<br>Output: /acddfd/example</b>↵</html>↵";
      
      var b_text = $(input).find( 'h1' ).text();
      

      【讨论】:

      • 问题是关于获取2016-10-18-18-38-29部分文本而不是全部文本。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多