Javascript 随机更改文本和颜色
我试图编写一个代码,将随机文本放在屏幕上,有时在循环2中更改颜色 我不明白为什么我的代码只循环一次。看起来show函数本身可以工作,但是测试循环运行得不好Javascript 随机更改文本和颜色,javascript,random,Javascript,Random,我试图编写一个代码,将随机文本放在屏幕上,有时在循环2中更改颜色 我不明白为什么我的代码只循环一次。看起来show函数本身可以工作,但是测试循环运行得不好 <script type="text/javascript">//<![CDATA[ window.onload=function(){ button.addEventListener('mousedown', function (e) { test(); })
<script type="text/javascript">//<![CDATA[
window.onload=function(){
button.addEventListener('mousedown', function (e) {
test();
});
}//]]>
function show() {
b=makeid();
document.getElementById("text").innerHTML = b;
}
function test() {
var div = document.getElementById('text');
for (i=0;i<5;i++) {b=makeid();
document.getElementById("text").innerHTML = b;
if (i==2) {div.style.color = '#000000';}
setTimeout(function(){ show();},500);
if (i==2) {div.style.color = '#CC0000';}
}
}
function makeid() {
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < 2; i++ )
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
</script>
</head>
<body>
<button id="button">click</button>
<div>
<span id="text"></span>
</div>
</body>
您可以在“show”前面添加“console”,您可以看到循环运行5次;然后您可以看到“setTimeout”是如何工作的,您将知道原因 您的代码不足以实现您想要实现的目标 与您的代码有关的问题:- 您使用固定的超时调用show函数,因此即使函数等待,它的所有实例也会在同一时间段后立即被调用 你无法用眼睛看到文本的变化 如果是颜色:- 您总是将颜色更改为相同的颜色,因此输出中始终是单色 我已达到你的要求。试试这个:- window.onload=函数{ 按钮。添加了Listener'mousedown',函数e{ 测验 }; } 功能表演 { b=makeid; document.getElementByIdtext.innerHTML=b; } 功能测试 { var div=document.getElementById'text'; var repeat=setIntervalfunction{ div.style.color=getRandomColor; 显示 },500; setTimeoutfunction{clearIntervalrepeat;},2500; } 函数getRandomColor{ 变量字母='0123456789ABCDEF'; var color=; 对于变量i=0;i<6;i++{ 颜色+=字母[Math.floorMath.random*16]; } 返回颜色; } 函数makeid { var text=; 可能的风险值=ABCDEFGHIjKLMNOPQRSTUVWXYZABDEFGHIjKLMNOPQRSTUVXYZ0123456789; 对于变量i=0;i<2;i++ text+=可能的.characterMath.floorMath.random*可能的.length; 返回文本; } 点击
您的代码始终只会更改为相同的颜色,因此您无法在输出中随时看到不同的颜色。请查看我的答案,我已尝试通过了解您的问题尽可能接近您的要求。明白了。谢谢这是唯一的方法还是还有睡眠功能?@OMGsh,不,javascript中没有睡眠功能。JavaScript只有两个计时功能,setInterval和setTimeout。现在还需要存储文本和颜色。但是如果我在循环中使用b[I]=makeid;setTimeoutfunction{document.getElementByIdtext.innerHTML=b[i];},500+i*500;当处理setTimeout时,b[i]已经changed@OMGsh好啊great@OMGsh如果您的问题得到解决,并且您对我的答案感到满意,那么请将其标记为答案。非常感谢。