2013-02-21 77 views
0

我有一個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> 

「如果」 和 「其他」 位被執行,但 「否則,如果」 位完全排除在外。 「美好的一天」永遠不會發生!

這是爲什麼? 我只是不明白我做錯了什麼。

回答

8

myProb只會是01,所以else if將永遠不會滿足的條件。


我的假設是你想要01之間的小數位。在這種情況下除去Math.Round()

var myProb = Math.random(); 
+0

是的,你是對的。有道理(不知道爲什麼我沒有看到)。現在這一切都很好。謝謝! – 2013-02-21 14:43:22

2

Math.round(Math.random() * 1);只能產生0或1. 0代表「早上好」,1代表「晚上好」。

1

在代碼

if (myProb<0.3) 
    { 
    x="Good morning"; 
    } 

爲真的

else if (myProb<0.6) 
    { 
    x="Good day"; 
    } 

math.round產生之前0或1

3

Math.round(Math.random() * 1)結果只能由於Math.round是0或1,所以你永遠不會進入中間如果。

+0

謝謝,是的,這正是爲什麼。 :) – 2013-02-21 14:48:27

1

嘗試

Math.round(Math.random() * 100)/100 

或者只是

Math.random() 
+0

感謝您的快速響應!而已。它現在很好用! – 2013-02-21 14:46:51

-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()。分離這樣的代碼使得它更清楚你的錯誤所在。

+3

-1:不是不幸的。問題是舍入一個隨機數。 – freakish 2013-02-21 11:13:50

+0

@freakish是的,你是正義的。我現在看到了,但回答:)有點快。我想現在我的答案顯示,if-elseif-else部分代碼沒有問題... – 2013-02-21 11:18:12

+0

哈哈是的,我可以證實這一點!謝謝大家,你理解正確!舍入小數是問題:P! – 2013-02-21 14:45:06