2013-02-21 2 views
0

у меня есть, если еще заявление: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 только когда-либо будет 0 или 1, так else if никогда не будет условие, которое выполнено.


Мое предположение вы хотите знаков после запятой между 0 и 1. В этом случае удалить Math.Round():

var myProb = Math.random(); 
+0

Да, вы так правы. Имеет смысл (не знаю, почему я этого не видел). Теперь все отлично работает. Спасибо! –

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) может только 0 или 1 из-за Math.round, следовательно, почему вы никогда не попадание в середине если.

+0

Спасибо, да, именно поэтому. :) –

1

Попробуйте

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

Или просто

Math.random() 
+0

Спасибо за быстрый ответ! Вот и все. Теперь он отлично работает! –

-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

+0

@ freakish Да, ты в самом деле. Я видел это сейчас, но был немного быстрым с ответом :). Я думаю, что мой ответ теперь показывает, что нет ничего плохого в части кода if-elseif-else ... –

+0

Ха-ха, да, и я могу это подтвердить! Спасибо всем, вы правильно поняли! Проблемой было округление десятичных знаков: P! –

Смежные вопросы