Ruben
Ruben

Reputation: 37

output as undefined/NAN

Would anyone clerify why my program is outputting undefined or NAN? I know for sure that my random number generator is working. Also, I'm trying to sum up all of the "score" value when the number generator has generated the value 10 times. Thanks for the help

<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;
	var number;
	number = randomnumber()
	for (n=0;n<11; n=n+1)
	{
		if (number==0)
			{
			score =score+0
			}
		if (number==2)
			{
			score =score+2
			}
		if (number==3)
			{
			score =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>

Upvotes: 2

Views: 570

Answers (3)

Bojan Kseneman
Bojan Kseneman

Reputation: 15668

You need to initialize your score variable with 0. Until you don't, it's value is undefined and when you do math operations on an undefined object, you wil get a NaN error. I have also formatted your code a bit.

<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: If I understand your comment correctly, you should be doing something like this

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

Upvotes: 1

user1864610
user1864610

Reputation:

Variable score is declared in your totalscore function but never initialised. Adding anything to undefined gives NaN, which is what your function writes to the page.

Upvotes: 1

djaszczurowski
djaszczurowski

Reputation: 4523

Because score variable is undefined. You should initialize it with a number for instance: var score = 0;

Upvotes: 1

Related Questions