【发布时间】:2021-11-04 07:22:00
【问题描述】:
我正在尝试在单击原始方块后立即显示新方块。使用此代码,您必须每次重新加载才能出现新的方块。有没有办法将带有布尔值的while循环与javascript中的onclick函数结合起来以实现这一点?代码如下:
var starttime = new Date().getTime();
var topposition = Math.random() * 650;
var leftposition = Math.random() * 650;
var colours = ["red", "blue", "yellow", "green", "brown", "black", "purple", "orange"];
document.getElementById('shape').style.backgroundColor = colours[Math.floor(Math.random() * colours.length)];
document.getElementById('shape').style.top = topposition + "px";
document.getElementById('shape').style.left = leftposition + "px";
document.getElementById("shape").onclick = function() {
document.getElementById("shape").style.display = "none";
var endtime = new Date().getTime();
var timetaken = (endtime - starttime) / 1000;
document.getElementById("timeTaken").innerHTML = +timetaken + " seconds";
}
#shape {
width: 200px;
height: 200px;
position: relative;
}
<p>Your time: <span id="timeTaken"></span></p>
<div id="shape"></div>
【问题讨论】:
-
不要使用 while 循环来检查某些内容。它会阻止页面。
-
"我试图在单击原始方块后立即显示新方块。"为什么要避免标准的单击事件侦听器?跨度>
-
您应该使用您的 JS 逻辑创建一个 function() 并使用事件调用它。以 onlick 为例,developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/…。在您的示例中,该逻辑仅在页面加载后调用一次。
-
我刚接触编码。那么,我创建了一个在单击原始方块时运行的函数,该函数的指令是创建一个新方块?有没有办法让 1 个元素在您每次单击它时移动、更改颜色并同时启动计时器?我认为我必须从代码中删除“display = none”,但由于随机位置在变量内,它不会移动。计时器也只会添加总时间而不是重置,这就是为什么我想到一个循环让它每次都重新启动,并让随机化也重新启动。
-
更新:每次点击时都能移动并改变颜色。然而,计时器再次只是结合了时间。我想这是因为它在页面加载后立即启动,但我需要它在第一次加载页面时启动,并在单击正方形时重新启动。
标签: javascript while-loop onclick boolean