Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 随机更改文本和颜色_Javascript_Random - Fatal编程技术网

Javascript 随机更改文本和颜色

Javascript 随机更改文本和颜色,javascript,random,Javascript,Random,我试图编写一个代码,将随机文本放在屏幕上,有时在循环2中更改颜色 我不明白为什么我的代码只循环一次。看起来show函数本身可以工作,但是测试循环运行得不好 <script type="text/javascript">//<![CDATA[ window.onload=function(){ button.addEventListener('mousedown', function (e) { test(); })

我试图编写一个代码,将随机文本放在屏幕上,有时在循环2中更改颜色

我不明白为什么我的代码只循环一次。看起来show函数本身可以工作,但是测试循环运行得不好

<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如果您的问题得到解决,并且您对我的答案感到满意,那么请将其标记为答案。非常感谢。