随机秒后改变盒子颜色

时间:2014-10-24 14:29:12

标签: javascript jquery html

我写了一个java脚本代码:

<html>
<head>
    <style type="text/css">

        #myDiv {
            height: 150px;
            width: 150px;
            background-color: red;
        }

    </style>


</head>
<body>
    <div id="myDiv"></div>

<script type="text/javascript">

function setColor(){
    var x = '0123456789ABCDEF';
    var y='#';
    var i;
    for(i=0; i<6; i++){
    y = y+x[Math.round(Math.random()*15)];
}
document.getElementById("myDiv").style.backgroundColor=y;
}

var myVar = setInterval(function(){setColor()}, 1000);


</script>

</body>
</html>

它会在1秒后改变每个盒子的颜色,但我想在随机秒后改变颜色。在1秒之后第一次说,然后在0.5秒之后说,之后5秒钟。等等。我不想刷新页面来执行此操作。请帮忙!

2 个答案:

答案 0 :(得分:3)

Javascript函数

这个功能可以帮到你:

function doSomething() {}

(function loop() {
    var rand = Math.round(Math.random() * (3000 - 500)) + 500;
    setTimeout(function() {
            //alert('A');
            doSomething();
            loop();  
    }, rand);
}());

doSomething()随机间隔:)

here's the Demo - 只需从警报中删除“//”即可查看其中的操作! :)


使用您的示例

JsFiddle使用您的函数更改div的颜色:)

修改

第一行:(获得兰特)

// Returns a random number between min (inclusive) and max (exclusive)
function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}
// and so you will get a random number between the max and min values

第二行(setTimeout)

setTimeout(function() { 
//call this function

循环();

loop(); // this is using a recursive method function and so the whole method is called again/ over and over 

答案 1 :(得分:0)

首先,你不能只是在javascript中访问像数组一样的字符串字符,而是使用.charAt()方法。

var hex = x.charAt(Math.round(Math.random()*15)),
    color = '#' + hex + hex + hex;
document.getElementById("myDiv").style.backgroundColor=color;