我正在学习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;
}
答案 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;
}