用Javascript计数的单词

问题描述 投票:0回答:2

我试图找出一种方法来计算javascript中放置在多个段落块中的单词。现在我有一个连接到函数的按钮,该函数链接到段落中的ID。这是我的代码

function processText(elements) {
  var count = 0;
  for (var i = 0; i < elements.length; i++) {
    count += elements[i].textContent.split(/\s/).length;
  }
  return count;
}
var wordsInParagraphs = processText(document.getElementsByTagName("data"));
<!DOCTYPE html>
<html>

<head>
  <meta name="title" content="The Cask of Amontillado--Edgar Allan Poe (1809-1849)">
</head>

<body>
  <p><button 1="processText(elements);">Process</button></p>
  <p id="data"></p>
</body>
javascript html id
2个回答
1
投票

这是你在找什么?你只需要在点击时调用该函数并获取你想要计算的所有元素,其余的就在那里(我使用的是split而不是regex)。

function processText() {
  var elements = document.querySelectorAll(".data");
  var count = 0;
  for (var i = 0; i < elements.length; i++) {
    count += elements[i].textContent.split(" ").length;
  }
  console.log(count)
}
<!DOCTYPE html>
<html>

<head>
  <meta name="title" content="The Cask of Amontillado--Edgar Allan Poe (1809-1849)">
</head>

<body>
  <p><button onclick="processText();">Process</button></p>
  <p class="data">text in paragraph one</p>
  <p class="data">text in paragraph two</p>
</body>

1
投票

标记有一些问题,例如,1="processText(elements);"可能你的意思是onClick="processText(elements);",但是,你正在通过一个名为elements的param。此外,你有一个id="data"标签,你正试图寻找标签名称这些元素。

更好的方法是使用函数addEventListener获得更好的逻辑,你应该使用类名class="data"标记这些段落。最后,对于按空格分割使用此正则表达式/\s+/

function processText(elements) {
  var count = 0;
  for (var i = 0; i < elements.length; i++) {
    count += elements[i].textContent.split(/\s+/).length;
  }
  return count;
}

document.getElementById('myButton').addEventListener('click', function() {
  var wordsInParagraphs = processText(document.getElementsByClassName("data"));
  document.getElementById('total').textContent = wordsInParagraphs;
});
<p><button id='myButton'>Process</button></p>
<p class="data">Ele from Stack</p>
<p class="data">Ele from &nbsp;&nbsp;&nbsp;Venezuela</p>
<p id='total'></p>
© www.soinside.com 2019 - 2024. All rights reserved.