-1

申し訳ありませんが、私は JS を初めて使用します。ページ上の単語を動的にカウントするコードを記述しようとしています。このコードは「whenkeydown」関数内にあります。

var text = $(this).val();

var word=text.split(" ")

    //word counter
function countWords(word, text) {
    var y = word.value; 
    var words = 0;
    a = y.replace(/\s/g, ' ');
    a = a.split(' ');
    for ( z = 0; z < a.length; z++) {
        if (a[z].length > 0)
            words++;
    }
    wordCount = words;
}

しかし、デバッガーで「TypeError: y is undefined」というエラー メッセージが表示されますか? ありがとう

4

2 に答える 2

4

wordは配列であり、属性はありませんvalue。さらに、関数は単語の配列ではなく、文字列全体をパラメータとして受け入れるようです。より明確なバージョンは次のとおりです。

function countWords(text) {
    var words = text.replace(/\s/g, ' ').split(' ');
    var wordCount = 0;
    for (var z = 0; z < words.length; z++) {
        if (words[z].length > 0)
            wordCount++;
    }

    return wordCount;
}

var text = $(this).val();
var wordCount = countWords(text);
于 2012-11-20T12:33:24.247 に答える
1
function countWords(wordsArray) {
  var words = 0;
  try{ 
    for(k in wordsArray){
      var sa = (wordsArray[k]  ? word.value.replace(/\s/g, ' ') : '').split(' ');
      for (i in sa) if(sa[i].trim()) words++;
    }
  catch(ex){}
  return words;
}

また:

$(this).val().match(/\S+/g).length;
于 2012-11-20T12:36:02.197 に答える