gpt4 book ai didi

Javascript 根据 if 语句更改 array[i],然后在每次运行函数时将其连接起来

转载 作者:行者123 更新时间:2023-11-28 07:59:59 25 4
gpt4 key购买 nike

我试图在 if 语句中附加一个数组,以便下次运行该函数时 array.length 增加,给出不同的结果。我的问题是 for 循环依赖于 if 语句的结果。即如果满足要求,则 array.length 将增加 1。然而,我知道如何做到这一点的唯一方法是将 for 循环放在 if 语句中,这基本上会在每次函数启动时生成 var i = 0 。我想我需要在 if 语句之外对 i 做一些事情。

    //setting a loop or rather interval
function hRandom() {
var intervalID = setInterval(function() {
document.getElementById("head").style.color=getRandomColor();
}, 1000);
setTimeout(function() {
clearInterval(intervalID);
}, 180000);
}


var clickedTime; var createdTime;

Date.now();

function makebox() {

var time=Math.random();

time=time*5000;

setTimeout(function() {

if (Math.random()>0.5) {
document.getElementById("redBox").style.borderRadius = "50%";
} else {
document.getElementById("redBox").style.borderRadius ="0";
}

var top=Math.random();

top=top*300;

var left=Math.random();

left=left*600;

document.getElementById("redBox").style.top=top+"px";
document.getElementById("redBox").style.left=left+"px";

document.getElementById("redBox").style.backgroundColor = getRandomColor();
document.getElementById("redBox").style.display = "block";
createdTime=Date.now();
}, time);
}

document.getElementById("redBox").onclick = function() {

clickedTime=Date.now();

reactionTime=(clickedTime-createdTime)/1000;

var rt = parseFloat(reactionTime);

var about = new Array();

about[0]="Statement one"
about[1]="Statement two";
about[2]="Statement three";

if (rt < 0.5)
for (var i =0; i < about.length; i++) {document.getElementById("para").innerHTML = about[i];}
else {document.getElementById("para").innerHTML = "TOO SLOW!";}

document.getElementById("yourTime").innerHTML=reactionTime+"s";


this.style.display = "none";
makebox();

}

makebox();
hRandom();

最佳答案

您需要将需要跟踪点击处理程序调用状态的任何内容移到该函数之外。

例如(更改值以使其更容易触发逻辑):

var createdTime = Date.now();
var about = ["Statement one", "Statement two", "Statement three"];
var aboutIdx = 0;

document.getElementById("redBox").onclick = function () {

clickedTime = Date.now();

reactionTime = (clickedTime - createdTime) / 1000;

var rt = parseFloat(reactionTime);


if (rt < 10.5) {
document.getElementById("para").innerHTML = about[aboutIdx++ % about.length];
} else {
document.getElementById("para").innerHTML = "TOO SLOW!";
}

document.getElementById("yourTime").innerHTML = reactionTime + "s";
};

在这里,我不是循环遍历 about,而是引用一个外部作用域的 aboutIdx 变量,该变量跟踪调用点击处理程序的次数。 Modulo (%)根据 about 数组的长度,您将获得索引 0、1 或 2,具体取决于 aboutIdx 的值。

jsFiddle demo

关于Javascript 根据 if 语句更改 array[i],然后在每次运行函数时将其连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25551975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com