function averageCalculator (numvalues) {
for(i=0, i <= numvalues, i++>) {
var score = prompt("input the score")
result1 += score;
}
alert(result1 / 3);
}
此功能稍后会被带有onclick="averageCalculator (2)
<input type="button" value="Click for the average" onclick="averageCalculator (2)">
任何想法为何不起作用?它应该提示您输入2个值,然后提醒您平均值。不确定什么是错的。
答案 0 :(得分:4)
您的代码有多个问题。 for循环格式不正确,您需要使用分号终止语句。您还需要声明变量。你的循环将运行numvalues + 1次,这就是我在你的循环中删除=的原因。此外,如果你想计算你想要除以numvalues的平均值。
function averageCalculator (numvalues) {
var result1 = 0;
for(i=0; i < numvalues; i++) {
var score = prompt("input the score");
result1 += score;
}
alert(result1 / numvalues);
}
除了无效的语法之外,你将在这里遇到一个常见的“问题”。输入被视为字符串,而不是添加它们将被连接。提供2和2作为分数将得到11. 2与2 = 22/2 = 11连接。在将它们加在一起之前,需要明确地将值转换为数字:
function averageCalculator (numvalues) {
var result1 = 0;
for(i=0; i < numvalues; i++) {
var score = prompt("input the score");
result1 += Number(score);
}
alert(result1 / numvalues);
}
以上代码将正确返回2
答案 1 :(得分:2)
for循环的语法错误:
for(i=0, i <= numvalues, i++>) {
应该是
for(i=0; i <= numvalues; i++) {
提示:此外,最好使用
for(var i=0; i <= numvalues; i++) {
从那以后i
将是一个局部变量而不是全局变量。
答案 2 :(得分:1)
试试这个
for(var i = 0; i&lt; = numvalues; i ++){}
答案 3 :(得分:1)
另一种解决方案(使用函数式编程库,如Underscore.js):
function averageCalculator(numValues) {
var numbers = _.map(_.range(numValues), function(element) {
return +prompt('input the score');
});
var result = _.reduce(numbers, function(memo, number) {
return memo + number;
}, memo);
alert(result / 3);
}
虽然有点复杂(而且效率较低),但你会完全摆脱循环。
修改强>
+prompt('input the score')
与Number(prompt('input the score'))
的确有效。