Javascript随机数和背景从按钮更改

时间:2013-11-17 00:05:02

标签: javascript button random numbers

我遇到了麻烦。我想按一个按钮,随机编号返回文本框。如果数字是偶数我想将背景颜色更改为红色,如果它是奇数我想要将背景颜色更改为黑色。我几乎可以工作,但是当我一直按下按钮时它不会继续改变背景颜色,它只会做第一个。这是我的代码。任何帮助将不胜感激。

<script type="text/javascript">

function BackgroundEven(){
document.body.style.backgroundColor="#DA0505";
}
function BackgroundOdd(){
document.body.style.backgroundColor="#000000";
}

function Random() {

return Math.floor(Math.random()*37);
}

var rando= Random();
function Change(){
if(rando%2 == 0)
{
BackgroundEven();
} 
else{
BackgroundOdd();
}
}
}

</script>

<input type="text" name="Result" value="" id="Random" size="5"/>
<input type="button" value="Spin" onclick="document.getElementById('Random').value=Random();Change();" />
</input>

3 个答案:

答案 0 :(得分:1)

您在onclick中生成一个随机数,然后使用新生成的随机数进行奇数/偶数检查。您需要确保检查填充到输入中的随机数:

<input type="button" value="Spin" onclick="Change(document.getElementById('Random').value=Random());" />

function Change(currentNum) {
  if(currentNum % 2 == 0)
    BackgroundEven();
  else
    BackgroundOdd();
}

注意我如何将新分配的随机数传递给Change()函数,以便它在与输入中填充的相同随机数上运行。

答案 1 :(得分:0)

尝试Math.floor(Math.random()*2);,0或1。

答案 2 :(得分:0)

尝试将随机数作为参数传递给Change,而不是依赖于闭包。

function Change(rando){
  if(rando%2 == 0) {
    BackgroundEven();
  } 
  else {
    BackgroundOdd();
  }
}

使用onclick一次调用两个或三个函数也不是很好。现在,我们通常会在文档加载后立即向对象附加一个监听器。也就是说,让你的代码更漂亮......

function clickForRandom(){
  var rando = Random();
  document.getElementById('Random').value = rando;
  Change(rando)
}

<input type="button" value="Spin" onclick="clickForRandom()" />