javascript - 如何使用javascript计算页面上的字数

标签 javascript html

<分区>

我的任务是计算页面上的字数,而我目前的代码是计算字母数。我完全没有想法。这是它的样子:

var profile_values = document.getElementsByClassName('profile-value');
var total_words = 0;
for (i = 0; i < profile_values.length; i++) {
  total_words += profile_values[i].innerHTML.split(' ').length;
}
document.getElementById('word-count').innerHTML = total_words;
<div class="profile-value">
  <td>
    <p>I am a profile value</p>
  </td>
</div>

<div id="stats">
  <h3>Stats</h3>
  <span id="word-count" class="large">0</span>
  <br>words found.
</div>

最佳答案

使用textContent而不是 innerHTMLtrim()它,并使用正则表达式拆分任何(序列)空白(包括制表符、换行符……不仅是空格):

total_words += profile_values[i].textContent.trim().split(/\s+/).length;

var profile_values = document.getElementsByClassName('profile-value');
var total_words = 0;
for (i = 0; i < profile_values.length; i++) {
  total_words += profile_values[i].textContent.trim().split(/\s+/).length;
}
document.getElementById('word-count').innerHTML = total_words;
<table><tr class="profile-value">
  <td>
    <p>I am a profile value</p>
  </td>
</tr></table>

<div id="stats">
  <h3>Stats</h3>
  <span id="word-count" class="large">0</span>
  <br>words found.
</div>

NB1:td 标签不允许作为 div 的子标签。

NB2:坚持 innerHTML 的解决方案在某些情况下会报告错误的数字,如本例所示:

<table><tr class="profile-value">
  <td style="background: yellow">
    <p>I am a <font color="red">profile </font> value</p>
  </td>
</tr></table>

innerHTML 的解决方案将报告 11 个单词,而实际上仍然只有 5 个。

关于javascript - 如何使用javascript计算页面上的字数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38382252/

相关文章:

javascript - Clipboardjs 将div的html内容复制到剪贴板

javascript - 是否可以向现有对象添加构造函数?有意义吗?

javascript - 如何使用 tweet_button.html 在 twitter 中与 # 共享 url

javascript - 如何分配 html 格式的 javascript 变量?

php - 使用codeigniter以单一形式将多个数据插入到mysql表中

javascript - 使用原型(prototype)从 CSS 类获取颜色

javascript - 在另一个 HTML 页面中创建 HTML 页面的 Webview 预览

javascript - 在 JavaScript 中创建按钮后出现不需要的情况

javascript - 如何将 JavaScript 应用于 Bootstrap btn-group-justified 以选择/取消选择子按钮元素

javascript - 根据选择值过滤表行数