2015-05-10 2 views
2

Кто-нибудь может подтвердить, почему моя программа выводит неопределенные или NAN? Я точно знаю, что мой генератор случайных чисел работает. Кроме того, я пытаюсь подвести итог всему значению «оценка», когда генератор чисел сгенерировал значение 10 раз. Спасибо за помощьвывод как undefined/NAN

<HTML> 
 
<!Foundation Page for building our Javascript programs> 
 
<HEAD> 
 
<TITLE>The Foundation Page </TITLE> 
 
<SCRIPT LANGUAGE = "JavaScript"> 
 
function main() 
 
\t { 
 
\t randomnumber() 
 
\t totalscore() 
 
\t } 
 
function randomnumber() 
 
{ 
 
\t var randomnumber; 
 
\t randomnumber = Math.random()*3; 
 
\t return(Math.floor(randomnumber+0.5)); 
 

 
} 
 
function totalscore() 
 
{ 
 
\t var n; 
 
\t var score; 
 
\t var number; 
 
\t number = randomnumber() 
 
\t for (n=0;n<11; n=n+1) 
 
\t { 
 
\t \t if (number==0) 
 
\t \t \t { 
 
\t \t \t score =score+0 
 
\t \t \t } 
 
\t \t if (number==2) 
 
\t \t \t { 
 
\t \t \t score =score+2 
 
\t \t \t } 
 
\t \t if (number==3) 
 
\t \t \t { 
 
\t \t \t score =score+3 
 
\t \t \t } 
 
\t \t document.write(score) 
 
\t } 
 
} 
 

 
</SCRIPT> 
 
<HEAD> 
 
<BODY> 
 
<BODY BGCOLOUR = "WHITE"> 
 
<H2>The Foundation Page </H2> 
 
<HR> 
 
<SCRIPT LANGUAGE = "Javascript"> main() </SCRIPT> 
 
<INPUT NAME = "dobutton" TYPE = "button" value = "Start game" on Click = "game()"> 
 
<INPUT NAME = "dobutton" TYPE = "button" value = "Leaderboard" on Click = "leader()"> 
 
</BODY> 
 
</HTML>

ответ

1

Поскольку score переменная undefined. Вы должны инициализировать его с номером, например: var score = 0;

1

Вам необходимо инициализировать score переменные с 0. До тех пор, пока этого не сделаю, это значение undefined и когда вы делаете математические операции на неопределенном объекте, вы Виль получите NaN ошибка. Я также немного отформатировал ваш код.

<HTML> 
<!Foundation Page for building our Javascript programs> 
<HEAD> 
<TITLE>The Foundation Page </TITLE> 
<SCRIPT LANGUAGE = "JavaScript"> 
function main() 
    { 
    randomnumber() 
    totalscore() 
    } 
function randomnumber() 
{ 
    var randomnumber; 
    randomnumber = Math.random()*3; 
    return(Math.floor(randomnumber+0.5)); 

} 
function totalscore() 
{ 
    var n; 
    var score = 0; 
    var number = randomnumber(); 
    for (n = 0 ; n < 11 ; ++n) 
    { 
     if (number == 0){ 
      score += 0; 
     } 
     else if (number == 2) 
     { 
      score += 2; 
     } 
     else if (number == 3) 
     { 
      score += 3; 
     } 
     document.write(score) 
    } 
} 

</SCRIPT> 
<HEAD> 
<BODY> 
<BODY BGCOLOUR = "WHITE"> 
<H2>The Foundation Page </H2> 
<HR> 
<SCRIPT LANGUAGE = "Javascript"> main() </SCRIPT> 
<INPUT NAME = "dobutton" TYPE = "button" value = "Start game" on Click = "game()"> 
<INPUT NAME = "dobutton" TYPE = "button" value = "Leaderboard" on Click = "leader()"> 
</BODY> 
</HTML> 

EDIT: Если я правильно понял ваш комментарий правильно, вы должны делать что-то вроде этого

function totalscore() 
{ 
    var n; 
    var score = 0; 
    for (n = 0 ; n < 10 ; ++n) 
    { 
     score += randomnumber(); 
     document.write(score) 
    } 
    var grandTotal = score; 
} 
+0

Спасибо за помощь! – Ruben

+0

Нет проблем. Счастливое кодирование –

+0

И знаете ли вы, как я суммирую их все вместе, чтобы получить общую сумму? – Ruben

1

Переменная score объявлена ​​в вашей totalscore функции, но никогда не отформатирована. Добавление чего-либо к undefined дает NaN, что и записывает ваша функция на страницу.

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