1

I am new to coding, so I would like to know how I can count words of an website with javascript. Should I use .innerText and a for loop?

4

4 Answers 4

3

Split on regular expression /\W+/ (\W matches anything that is not a latin letter or arabic number or an underscore) :

var text = "These are two sentences. They have ten words in total."; alert(text.split(/\W+/).length)

More details on regexp can by found on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

Sign up to request clarification or add additional context in comments.

5 Comments

\W+ would be better.
@Xufox Any case where not having the + would give wrong result ?
"These are two sentences. They have ten words in total.".split(/\W/).length would give 12 because the empty strings after . are counted as well.
Other than that, this is the best solution so far as this even allows em-dashes etc. to delimit words. But what about normal dashes? For example, is camel-case two words or one?
Also, the description is wrong (\W match words”). It should be “\W matches anything that is not a latin letter or arabic number or an underscore”.
1

May be it can help you:

<script> var words = document.getElementsByTagName('body')[0].innerHTML.replace(/<.*?>/g, ''); console.log(words.match(/\S+/g).length); </script> 

Comments

0

This is how I would count the number of words as you type:

$(document).ready(function(){ $("#count").on("keyup", function(){ $("#num").html($("#count").html().split(" ").length-1); }); }); 

JSFiddle code here

Comments

0

This will do the trick for you if the language on the site uses spaces to separate words.

$.fn.showWordCount = function (){ "use strict"; var $targ = $(this); var words = $targ.html().split(' '); var wordCount = words.length; alert(wordCount); }; $('body *').showWordCount(); 

Proof it works: http://codepen.io/nicholasabrams/pen/rVJPOx

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.