我尝试编写一个代码,在屏幕上放置随机文本并有时更改颜色(在循环2中)。
我不明白为什么我的代码只循环一次。似乎show()函数本身可以工作,但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>
答案 0 :(得分:0)
你可以添加&#39; console&#39;在&#39; show&#39;前面,您可以看到循环运行5次;然后您可以看到&#39; setTimeout&#39;工作,你会知道为什么
答案 1 :(得分:0)
您的代码不足以满足您的目标
您的代码问题: -
您使用固定超时调用local: inload.dat: No such file or directory
函数,因此即使该函数等待,所有它的实例也会在同一时间段后立即调用。
你无法用眼睛看到文字的变化。
如果有颜色: - 您总是将颜色更改为相同颜色,因此输出中始终为单色。
我已达到您的要求。试试这个: -
show()