我有一个if else声明:
<script>
function myFunction()
{
var x="";
var myProb = Math.round(Math.random() * 1);
if (myProb<0.3)
{
x="Good morning";
}
else if (myProb<0.6)
{
x="Good day";
}
else
{
x="Good evening";
}
document.getElementById("demo").innerHTML=x;
}
</script>
执行“if”和“else”位,但完全省略“else if”位。 “美好的一天”永远不会发生!
这是为什么? 我只是看不出我做错了什么。
答案 0 :(得分:8)
myProb
只会是0
或1
,所以else if
永远不会成为满足的条件。
我的假设是您希望0
和1
之间的小数位数。在这种情况下,请删除Math.Round()
:
var myProb = Math.random();
答案 1 :(得分:3)
由于Math.round,Math.round(Math.random() * 1)
的结果只能是0或1,所以你为什么永远不会进入中间呢。
答案 2 :(得分:2)
Math.round(Math.random() * 1);
只能产生0或1. 0会因“早安”而下降而1则会因“晚上好”而下降。
答案 3 :(得分:1)
在您的代码中
if (myProb<0.3)
{
x="Good morning";
}
之前
是真的
else if (myProb<0.6)
{
x="Good day";
}
和math.round
生成0或1
答案 4 :(得分:1)
尝试
Math.round(Math.random() * 100) / 100
或者只是
Math.random()
答案 5 :(得分:-1)
稍微改变你的函数以将myProb作为参数给出:
function myFunction(myProb)
{
var x="";
if (myProb<0.3)
{
x="Good morning";
}
else if (myProb<0.6)
{
x="Good day";
}
else
{
x="Good evening";
}
console.log(x);
}
myFunction(0.4)
在Chrome中执行此操作会将Good day
打印到控制台。你的问题似乎是你正在将值Math.random()
四舍五入。像这样分离代码可以更清楚地了解错误所在。