Подсчет слов в Javascript - PullRequest
       9

Подсчет слов в Javascript

0 голосов
/ 28 февраля 2019

Я пытаюсь найти способ подсчитать слова, которые помещены в несколько блоков абзаца в JavaScript.Прямо сейчас у меня есть кнопка, которая связана с функцией, и эта функция связана с идентификатором в абзаце.Вот мой код

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>

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Это то, что вы ищете?Вам просто нужно вызвать функцию по щелчку и захватить все элементы, которые вы хотите посчитать, у вас есть все остальное (я использую 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>
0 голосов
/ 28 февраля 2019

У разметки есть некоторые проблемы, например, 1="processText(elements);", вероятно, вы имели в виду onClick="processText(elements);", однако вы передаете параметр с именем elements.Кроме того, у вас есть тег с 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...