Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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_Html_Css_Image_Timer - Fatal编程技术网

如何使用JavaScript在计时器上更改交通灯中的灯?

如何使用JavaScript在计时器上更改交通灯中的灯?,javascript,html,css,image,timer,Javascript,Html,Css,Image,Timer,我已经制作了一组按顺序点亮的交通灯,但我想在打开网页时加载一个计时器,每2秒钟按顺序改变一次灯,而不是单击按钮 我试图这样做,但它不工作,如果你们知道为什么,可以帮助,请做。谢谢 <html> <body onload="timer()"> <div class="container"> <button class="btn" onclick="traffic_lights()">Change Lights</bu

我已经制作了一组按顺序点亮的交通灯,但我想在打开网页时加载一个计时器,每2秒钟按顺序改变一次灯,而不是单击按钮

我试图这样做,但它不工作,如果你们知道为什么,可以帮助,请做。谢谢

<html>

<body onload="timer()">

    <div class="container">
        <button class="btn" onclick="traffic_lights()">Change Lights</button>
        <img id="traffic-light" src="" alt="traffic lights">
    </div>

</body>

<script>

    var traffic_light_img = [];

    var i = 0;

    function traffic_lights() {
        if (i <= 3) {
            i++;
            document.getElementById("traffic-light").src = traffic_light_img[i];
        } else {
            i = 0;
            document.getElementById("traffic-light").src = traffic_light_img[i];
        }
    }

    function timer() {
        setInterval(traffic_lights, 2000);
    }

</script>

换灯
var交通灯img=[];
var i=0;
交通灯的功能(){

如果(i您的代码已经根据计时器自动影响交通灯。唯一的问题是您没有包含任何要加载的图像,并且在加载图像之前增加了索引。请记住,列表从索引0开始

而不是:

if (i <= 3) {
  i++;
  document.getElementById("traffic-light").src = traffic_light_img[i];
}

if(哦,对不起,我在我的实际代码中加载了图像,但网站不允许代码中的链接,所以我不得不删除它们。如果使用i=(++i)%3;@Pete--True,很好地抓住了:)尽管这是一个标准的JavaScript分配问题,如果他使用模,可能会引起怀疑;)不过,谢谢:)没问题:)如果这个答案为您解决了问题,请不要忘记单击投票按钮下方的灰色复选框,将解决方案标记为正确——这会将其从“未回答的问题”队列中删除,并使提问者和答问者都享有声誉。当然,这样说,您是一个We’我们没有义务将我的答案(或任何其他答案)标记为正确,尽管这确实有助于保持事情顺利进行:)
if (i < 3) {
  document.getElementById("traffic-light").src = traffic_light_img[i];
  i++;
}