计算html表上多个textareas上的单词

时间:2013-05-16 15:10:03

标签: javascript jquery textarea counter onkeyup

我有一个包含几个textareas(100)的html表格,它们都具有相同的ID“编辑”。

我的问题是我想要计算每个人和每个人的所有单词......

我已经尝试了一些我在互联网上找到的代码,这些代码在第一个textarea上工作正常,但是停止在第二个代码上工作......

我是javascript的新手,我甚至不知道从哪里开始。非常感谢所有的帮助。

由于

5 个答案:

答案 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;
 }