我尝试进行此简单的练习,但确实无法正常工作。单击按钮时,应该为您提供0到1000之间的随机数。再次单击该按钮时,它将创建另一个随机数,如果该随机数大于最后一个随机数,则会显示该随机数。如果不是,则不执行任何操作。在执行此操作的同时,它会计算运行该功能的次数。
我制作的数字确实给了我随机数字,但有时,它显示的数字小于最后一个数字,有时却没有。我不知道为什么。我怀疑这可能是因为我试图更改按钮的功能所在的代码行。
<!DOCTYPE html>
<html>
<head>
<input id="btn" type="button" onclick="initiate(1)" value="Click me!"><br>
<script>
function geid(id) {
return document.getElementById(id);
}
var count = 0;
function initiate(n) {
var x = n;
n = Math.floor(Math.random() * 1000);
document.getElementById("btn").onclick = function () {
initiate(n);
}
if (n > x) {
geid("fid").innerHTML = n;
count += 1;
geid("fid2").innerHTML = count + " times";
} else {
count += 1;
geid("fid2").innerHTML = count + " times";
}
}
</script>
</head>
<body>
Number : <div id="fid">0</div>
Tried <div id="fid2">0</div>
</body>
</html>
最佳答案
问题是,无论新选择的onclick
值是否大于先前的值(n
),都始终在更改x
函数。
举个例子:假设语句Math.floor(Math.random()*1000);
在多次运行时会产生以下值序列:100、500、200、300。
第一次单击时,该函数称为initiate(1)
,点fid1
设置为保留100
,onclick处理程序设置为调用initiate(100)
。
第二次单击时,该函数称为initiate(100)
,位置fid1
设置为容纳500
,onclick处理程序设置为调用initiate(500)
。到现在为止还挺好。
第三次单击,该函数被称为initiate(500)
,点fid1
在500
处保持不变,并且onclick处理程序被设置为调用initiate(200)
。嗯...
第四次单击时,该函数称为initiate(200)
,位置fid1
设置为保留300
,onclick处理程序设置为调用initiate(300)
。
因此,问题在于,如果要更改处理程序以始终将当前值保存在fid1
中,那么除非n > x
,否则不应更改处理程序。