繁体   English   中英

如何使阵列每次运行都能选择不同的选择?

[英]How can I make my array choose different choices each time it runs?

现在,我有一个包含三个选项的数组。 我设置了一个函数,因此每次都选择一个选项,但有时会重复输出。 我该如何编码,以便同一颜色不会连续重复两次?

<!DOCTYPEhtml>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Tester</title>
    <script type="text/javascript">

        var colors = ['#ce0e0e', '#079b0c', '#3e3fd6'];

        function changeColor(){
            var randomColor = colors[Math.floor(Math.random() * colors.length)];
            while (myDiv.style.backgroundColor == randomColor)
                randomColor = colors[Math.floor(Math.random() * colors.length)];

            myDiv.style.backgroundColor = randomColor;
        }
    </script>
    <style>
        .divClass {
            width:300px;
            height:300px;
            border: 1px solid black;
            border-radius:1000px;
            background-color:transparent;
        }
    </style>
</head>
<body>

    <div class=divClass id="myDiv" style="border:6px solid black;">
    </div>

    <input id=button type=button value="chagne color" onclick='changeColor()'>

</body>
</html>

我尝试使用unique = true,但这似乎没有用。

<script type="text/javascript">

        var colors = ['#ce0e0e', '#079b0c', '#3e3fd6'];
        var old;

        function changeColor(){

            var randomColor = colors[Math.floor(Math.random() * colors.length)];
            if(old){

                if(old !== randomColor){


                    myDiv.style.backgroundColor = randomColor;
                    old = randomColor;
                } else {
                    setTimeout(changeColor,300);
                }
            } else {
                myDiv.style.backgroundColor = randomColor;
                old = randomColor;



            }
        }
    </script>

他们现在不再重复。 “旧”保留第一次/上一次点击的价值。 如果获得相同的值,则重新启动功能,直到功能更改为止。

50次以上的点击,绝不会两次出现相同的颜色

var color = colors[Math.floor(Math.random() * colors.length)];    
function changeColor(){ 
        var newColor = colors[Math.floor(Math.random() * colors.length)];
        if(newColor==color){
          changeColor();
        } else {
          color = newColor;
          myDiv.style.backgroundColor = color;
        }
    }

您应该使用递归函数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM