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