Reputation: 13
Yesterday i wanted to try out javascripting in html documents and tried to create a simple roulette "game".
I can understand the code generate a number and display it. But im having difficulities using if statements to check the generated number displayed and the value in my input field. If i select 1 and it rolls 1 i get "You lost!"
Here is my code so far:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Web Roulette</title>
</head>
<body>
<p id="number" value=""> </p>
<form id="form3" name="form3" method="post" action="">
<label>
<input type="radio" name="rollSelection" value="0" id="rollSelection_0" />0
</label>
<br />
<label>
<input type="radio" name="rollSelection" value="1" id="rollSelection_1" />1
</label>
<br />
</form>
<form name="form2" method="post" action="" onsubmit="genNr(); return false">
<!--<label>Bet:
<input name="betInput" type="text" id="betInput" size="5" />
</label>//-->
<input type="submit" name="placeBet" id="placeBet" value="Roll" onclick="genNr();" />
<p id="roll">???</p>
<!--<p id="money">Money:</p>//-->
</form>
<script type="text/javascript">
var userBet = 0;
function genNr() {
if (document.getElementById('rollSelection_0').checked) {
userbet = 0;
} else if (document.getElementById('rollSelection_1').checked) {
userbet = 1;
}
document.getElementById('number').innerHTML = Math.floor(Math.random() * 2) + 0;
if (parseInt(document.getElementById('number').innerHTML) == userBet) {
document.getElementById('roll').innerHTML = "You Win!";
//document.getElementById('money').innerHTML = "Money: " + betInput * 2;
}
if (parseInt(document.getElementById('number').innerHTML) != userBet) {
document.getElementById('roll').innerHTML = "You Lost!";
}
}
</script>
</body>
</html>
Upvotes: 1
Views: 116
Reputation: 58422
Javascript is case sensitive so you check against userBet
which is set to 0 and never changes.
In you getNr
function you set userbet
- change this to userBet
and it will work:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Web Roulette</title>
</head>
<body>
<p id="number" value=""> </p>
<form id="form3" name="form3" method="post" action="">
<label>
<input type="radio" name="rollSelection" value="0" id="rollSelection_0" />0
</label>
<br />
<label>
<input type="radio" name="rollSelection" value="1" id="rollSelection_1" />1
</label>
<br />
</form>
<form name="form2" method="post" action="" onsubmit="genNr(); return false">
<label>Bet:
<input name="betInput" type="text" id="betInput" size="5" />
</label>
<input type="submit" name="placeBet" id="placeBet" value="Roll" onclick="genNr();" />
<p id="roll">???</p>
<!--<p id="money">Money:</p>//-->
</form>
<script type="text/javascript">
var userBet = 0;
function genNr() {
if (document.getElementById('rollSelection_0').checked) {
userBet = 0;
} else if (document.getElementById('rollSelection_1').checked) {
userBet = 1;
}
document.getElementById('number').innerHTML = Math.floor(Math.random() * 2) + 0;
if (parseInt(document.getElementById('number').innerHTML) == userBet) {
document.getElementById('roll').innerHTML = "You Win!";
//document.getElementById('money').innerHTML = "Money: " + betInput * 2;
}
if (parseInt(document.getElementById('number').innerHTML) != userBet) {
document.getElementById('roll').innerHTML = "You Lost!";
}
}
</script>
</body>
</html>
If you want to make the function a little better, you can do the following:
function genNr() {
userBet = parseInt(document.querySelector('input[name="rollSelection"]:checked').value); // use query selector to get the value of the input (instead of lots of ifs)
var number = Math.floor(Math.random() * 2); // set this as a variable so you don't need to use innerHtml in the if below
document.getElementById('number').innerHTML = number;
if (number == userBet) {
document.getElementById('roll').innerHTML = "You Win!";
} else { // use an else instead of another if, if you have more options, use an else if
document.getElementById('roll').innerHTML = "You Lost!";
}
}
Upvotes: 1