我有一个包含几个textareas(100)的html表格,它们都具有相同的ID“编辑”。
我的问题是我想要计算每个人和每个人的所有单词......
我已经尝试了一些我在互联网上找到的代码,这些代码在第一个textarea上工作正常,但是停止在第二个代码上工作......
我是javascript的新手,我甚至不知道从哪里开始。非常感谢所有的帮助。
由于
答案 0 :(得分:1)
当你按ID查找元素时,它只返回一个,所以你的方法不适用于多个元素。你可以做的是迭代id。例如,元素1的id =“edit1”,元素2 =“edit2”,元素100 =“edit100”等等。这样,您可以通过简单的for循环轻松访问所有这些:
var rootID = "edit";
var totalWordCount = 0;
for (var i=0; i<100; i++) {
var textElement = document.getElementById(rootID + i);
var textBoxContents = textElement.value;
// Count the words in one textbox.
var textBoxWordCount = 0;
// These are optional, they are there to account for new lines or double spaces
// and will help make your word count more accurate.
textBoxContents = textBoxContents.replace(/(^\s*)|(\s*$)/gi,"");
textBoxContents = textBoxContents.replace(/[ ]{2,}/gi," ");
textBoxContents = textBoxContents.replace(/\n /,"\n");
// This splits up words and counts them based on whether there is a space
// between them or not.
textBoxWordCount = textBoxContents.split(' ').length;
// Add this number of words to the total.
totalWordCount += textBoxWordCount;
}
// totalWordCount now holds the total number of words in all your boxes!
答案 1 :(得分:0)
正如HTML specification中所述, ID必须是唯一的。您的JavaScript代码失败,因为它符合此要求。在与第一个ID匹配后,没有理由继续检查元素。
答案 2 :(得分:0)
一旦您对ID进行了排序,非常重要,请使用以下小提琴帮助 - http://jsfiddle.net/dXcLH/1。
在这个小提琴中,它只是遍历每个textarea
并在列表中设置一个值。
答案 3 :(得分:0)
您可以尝试这样的事情:
// tas is all your textareas
var tas= document.getElementsByName("textareas"),
// or document.getElementsByTagName("textarea")
i,arr=[];
for(i=0;i<tas.length;i++){
arr.push({
textareaName:tas[i].name,
//rough word count
wordCount:tas[i].value.split(/\b[^\d\w\-]+\b/ig).length
}];
}
console.log(arr);
在Chrome中检查此代码,按F12并在控制台中查看arr变量,您可以点击它来检查它的值。
答案 4 :(得分:0)
为所有textareas 而不是ID 设置一个类后,您可以尝试以下操作:
function countAllWords(){
var result = 0;
$(".edit").each(function(){
var wordcount;
wordcount = $(this).yourCountingFunction();
result = result + wordcount;
});
return result;
}