我有一个HTML文件,其中有几个段落具有相同的类'profile-value'。我想使用JavaScript创建一个字数,可以计算每个段落的所有单词。我已经给了这个去:
var profile_values = document.getElementsByClassName('profile-value');
var total_words = 0;
for (var i = 0; i > profile_values.length; i++) {
total_words += profile_values[i].length;
};
然后使用innerHTML调用总数:
document.getElementById('word-count').innerHTML = total_words;
我已经看到迭代Nodelists是相当狡猾的,但我还尝试在尝试上面的代码之前将Nodelist转换为数组,再次无济于事。希望你们能对此有所了解吗?
答案 0 :(得分:2)
这个怎么样? https://jsfiddle.net/rrex0gju/
function getWordCounts(nodeList) {
var wordCount = 0;
for ( var i = 0; i < nodeList.length; i++ ) {
wordCount += nodeList[i].textContent.trim().split(' ').length;
}
return wordCount;
}
document.querySelector('span').textContent = getWordCounts(document.querySelectorAll('p'));
答案 1 :(得分:0)
使用字符串的split
属性,然后获取length
以获得字总数。
此处trim()
函数用于从字符串中删除前导和尾随空间。
var profile_values = document.getElementsByClassName('profile-value');
var total = 0;
for(var i = 0; i < profile_values.length; i += 1){
total += profile_values[i].innerHTML.trim().split(" ").length
}
alert(total);
<p class="profile-value"> sdfsf dsfsf dsfs sdfds </p>
答案 2 :(得分:0)
首先得到以下段落
var paras = document.getElementsByClassName('profile-value');
然后运行代码段以获取以下计数:
var count = 0;
for(var i=0; i<paras.length; i++){
var content = paras[i].textContent;
var words = content.match(/\S+/g);
count += words? words.length : 0;
}
console.log('count = ', count);
答案 3 :(得分:0)
使用上述回复,我已将代码更改为:
var profile_values = document.getElementsByClassName('profile-value');
var total_words = 0;
for (var i = 0; i < profile_values.length; i++) {
total_words = total_words + profile_values[i].innerText.split(" ").length;
};
这似乎已经成功了。这对你们来说是否正确? 我想感谢你们的帮助!
答案 4 :(得分:0)
访问所有类 profile_value :
var profile_values = document.querySelectorAll(".profile_value");
Profile_values现在是 HTML集合。浏览集合:
[].forEach.call(profile_values, function(paragraph) {});
在内部功能拆分 内部文字到数组 所有单词。数组的长度是最近段落的单词数:
var splitted = paragraph.innerText.split(" ");
var countWordsParagraph = splitted.length;
将countWordsParagraph添加到totalWordCount:
totalWordCount += countWordsParagraph;
达成:
var profile_values = document.querySelectorAll('.profile-value');
var totalWordCount = 0;
[].forEach.call(profile_values, function(paragraph) {
var splitted = paragraph.innerText.split(" ");
var countWordsParagraph = splitted.length;
totalWordCount += countWordsParagraph;
});