JavaScript函数不从HTML textarea

时间:2017-07-21 05:54:38

标签: javascript html

我正在学习JavaScript,我不明白为什么我的信息没有被字数统计功能检索。当我点击带有多个单词的消息的按钮时,我收到'1'作为单词计数,这是不正确的。我已经测试了使用console.log(calWords(某些消息))时正常工作的calWords函数。 此代码是使用要求编写的,我不能使用 .split()正则表达式。这是代码的链接: https://jsbin.com/rucicol/edit?html,js,console,output

<form class="userform">
  <label id="labeltxt">Enter a Message to Display Statistics</label><br>
  <textarea type="text" name="message" id='userInput'></textarea><br>
  <button type="button" onclick="showStats()">Submit</button>
</form>


// global variables
var numWords = 0;
var displayStats = document.getElementById('userInput').value;

// display stats
function showStats() {

   alert(calWords(displayStats));
}


// calculate words
function calWords(str) {

   for(var i = 0; i < str.length; i++) {
     if (str[i] === ' ') {
      numWords ++;
     }
   }
   return numWords + 1;
}

3 个答案:

答案 0 :(得分:4)

这是因为,当您创建displayStats时,您会在创建时获取textarea的值(例如,没有)。

要使您的脚本正常运行,您可以在textarea中“存储”对displayStats的引用,并在需要时访问其value

这是更正的脚本:

// global variables
var numWords = 0;
var displayStats = document.getElementById('userInput');

// display stats
function showStats() 
   alert(calWords(displayStats.value));
}


// calculate words
function calWords(str) {
   for(var i = 0; i < str.length; i++) {
     if (str[i] === ' ') {
      numWords ++;
     }
   }
   return numWords + 1;
}

答案 1 :(得分:2)

添加代码以获取函数内的文本区域内容。

// global variables
var numWords = 0;


// display stats
function showStats() {
  var displayStats = document.getElementById('userInput').value;
  alert(calWords(displayStats));
}


// calculate words
function calWords(str) {

  for(var i = 0; i < str.length; i++) {
    if (str[i] === ' ') {
      numWords ++;
    }
  }
  return numWords + 1;
}

答案 2 :(得分:1)

原因是你已经全局初始化WebView,一旦页面出现加载,它将被初始化。如果你在点击处理程序中移动displayStats会更好。

此外,如果您有兴趣知道textarea中的单词数量,则应将displayStats移到numWords内,这样您就可以获得该单词中存在的单词数量。文本区域。

calWords
// display stats
function showStats() {
  var displayStats = document.getElementById('userInput').value;
  alert(calWords(displayStats));
}

// calculate words
function calWords(str) {
  var numWords = 0;
   for(var i = 0; i < str.length; i++) {
     if (str[i] === ' ') {
        numWords ++;
     }
   }
   return numWords + 1;
}