javascript - 计算 DOM 字符串中的单词数

标签 javascript jquery html dom

我有以下 HTML 字符串:

<div><p>Hello <b>how are</b> you?</div>

我想循环 HTML 字符串 DOM 并用 span 标签包裹每个单词,并将单词编号作为 id,因此结果将如下所示:

<div><p><span id="word-1">Hello</span> <b><span id="word-2">how</span> <span id="word-3">are</span></b> <span id="word-4">you?</span></div>

我尝试使用JQuery方法$.parseHTML但没有运气来计算单词数,因为 DOM 节点值可以包含多个单词..

此外,如果单词内部有内联标签,如 <b>/<i>所以从 DOM 的 Angular 来看,每个标签都有不同的节点值,即使它是相同的单词)

知道如何解决这个问题吗?如何计算 HTML DOM 字符串中的单词数?

谢谢

最佳答案

试试这个。

HTML

<div id="content">
  <div><p>Hello <b>how are</b> you?</div>
</div>

脚本

var textNodes = $("#content *").contents().filter(function() {
    return this.nodeType === 3;
});

var counter = 1;
for(var i = 0;i<textNodes.length;i++)
{
    var val = $(textNodes).eq(i).text();
  var words = val.split(" ");
  var final = "";

  for(var j = 0;j<words.length;j++)
  {
    if(words[j].trim() != "")
    {
        final += "<span id='"+ counter +"'>"+ words[j] +" </span>";
      counter++;
    }
  }

  $($(textNodes)[i]).replaceWith(final);
}

Jsfiddle Link

关于javascript - 计算 DOM 字符串中的单词数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43253693/

相关文章:

jQuery.ajax() 的 Javascript 替代方案 - 面临错误

javascript - 防止在添加文本框值后添加它们

javascript - TypeError : ko. 可观察数组不是函数

javascript - 通过 Javascript 为 onclick 事件添加一个函数!

javascript - 如何在 Fuel UX 中继器中重新加载数据

javascript - 如何使一个单选按钮选项默认选中 Angular

javascript - 比较两个页面的内容

Firefox 上的 JQuery .position() 和 .offset() 错误

javascript - 获取字符串Jquery中标签中包含的字符串

javascript - 在 div 和幻灯片内容之间切换