随机更改文字和颜色

时间:2017-06-08 07:46:30

标签: javascript random

我尝试编写一个代码,在屏幕上放置随机文本并有时更改颜色(在循环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>

2 个答案:

答案 0 :(得分:0)

你可以添加&#39; console&#39;在&#39; show&#39;前面,您可以看到循环运行5次;然后您可以看到&#39; setTimeout&#39;工作,你会知道为什么

答案 1 :(得分:0)

  

您的代码不足以满足您的目标

您的代码问题: -

您使用固定超时调用local: inload.dat: No such file or directory函数,因此即使该函数等待,所有它的实例也会在同一时间段后立即调用。

你无法用眼睛看到文字的变化。

如果有颜色: - 您总是将颜色更改为相同颜色,因此输出中始终为单色。

我已达到您的要求。试试这个: -

show()