我正在尝试从用户那里获得输入,并在按钮被推到页面的已定义区域后显示分数,具体取决于他们输入的值。
我不确定IF语句是否是最有效的方法,但我想我会从这里开始。
我创建了一个带有文本输入字段和按钮的简单页面。
我想要的是让用户在字段中输入任意数字,点击按钮后,显示其分数。
我正在使用两个功能来完成此任务。
功能1:'calculate()'最终将取几个数字并执行进一步计算并显示分数。目前,我正在尝试将函数'followerScore()'的结果分配给变量'得分',并显示'得分'的值。
function calculate() {
var score = followerScore();
document.getElementById('result').innerHTML = "Your score is : " + score;
}
功能2:'followerScore()'的代码
function followerScore() {
var followerScore = 0;
var followers = document.getElementById('followers').value;
if (followers <= 25, 000){
followerScore = 1;
alert(followerScore);
} else if (25000 < followers <= 44000){
followerScore = 2;
} else if (44000 < followers <= 60000){
followerScore = 3;
} else if (60000 < followers <= 75000){
followerScore = 4;
} else if (75000 < followers <= 100000){
followerScore = 5;
} else if (100000 < followers <= 140000){
followerScore = 6;
} else if (140000 < followers <= 180000){
followerScore = 7;
} else if (180000 < followers <= 225000){
followerScore = 8;
} else if (225000 < followers <= 300000){
followerScore = 9;
} else if (followers > 300000){
followerScore = 10;
} else followerScore = "did you pick a number?";
}
我曾希望将值123输入到我的表单中时,点击“计算”按钮我会得到1分,但我得到的错误是未定义的。
html如下:
<body>
<form>
<input type="text" placeholder="Followers" id="followers">
</form>
<input type="submit" value="calculate" onclick="calculate();">
<div>
<p id='result'></p>
</div>
</body>
我的问题如下: 1.我是否错误地声明了变量'followerScore'或为什么我得到未定义的结果? 2.使用IF ELSE语句是评估和返回值的最佳方法,还是有办法使用SWITCH语句来评估返回这些分数或什么是最佳实践?我感觉好像做一组IF ELSE会非常麻烦,例如,如果我更多地分解范围。
答案 0 :(得分:3)
您需要从followerScore
函数返回followerScore()
变量。现在它不返回任何东西。您应该将followerScore()
的最后一行设置为return followerScore;
至于你关于开关的问题,我个人觉得你的条件很清楚,而且在javascript的性能方面,我相信if语句更快。请参考这些基准:
答案 1 :(得分:1)
您可以将值移动到数组中并使用Array#findIndex
。
var values = [0, 25000, 44000, 60000, 75000, 100000, 140000, 180000, 225000, 300000, Infinity],
followerScore = values.findIndex(v => followers <= v);
这需要检查你是否有号码。
答案 2 :(得分:0)
1)您的followerScore()
会返回任何内容,因此您根本无法访问分数。
2)if/else
是一种很好的做法,如果你有条件可以检查,当你有更好的数字使用switch
或以优化的方式使用if/else
时。{/ p>
代码switch
:
function followerScore() {
var followerScore = 0;
var followers = document.getElementById('followers').value;
switch(followers){
case '> 300000':
followerScore = 10;
break;
case '<= 300000':
followerScore = 9;
break;
case '<= 225000':
followerScore = 8;
break;
case '<= 180000':
followerScore = 7;
break;
case '<= 140000':
followerScore = 6;
break;
case '<= 100000':
followerScore = 5;
break;
case '<= 75000':
followerScore = 4;
break;
case '<= 60000':
followerScore = 3;
break;
case '<= 44000':
followerScore = 2;
break;
case '<= 25000':
followerScore = 1;
break;
default:
followerScore = "did you pick a number?";
}
return followerScore;
}
优化if/else
的代码:
function followerScore() {
var followerScore = 0;
var followers = document.getElementById('followers').value;
if(followers > 300000){
followerScore = 10;
} else if(followers <= 300000){
followerScore = 9;
} else if(followers <= 225000){
followerScore = 8;
} else if(followers <= 180000){
followerScore = 7;
} else if(followers <= 140000){
followerScore = 6;
} else if(followers <= 100000){
followerScore = 5;
} else if(followers <= 75000){
followerScore = 4;
} else if(followers <= 60000){
followerScore = 3;
} else if(followers <= 44000){
followerScore = 2;
} else if(followers <= 25000){
followerScore = 1;
} else {
followerScore = "did you pick a number?";
}
return followerScore;
}