JavaScript点击按钮时切换三个图像

4
<!DOCTYPE html>
<html>
    <head>
        <script>
            var trafficlights = ['redlight.png','yellowlight.png','greenlight.png'];
            var num = 1

            function lightsequence() {
                document.getElementById('light').src = trafficlights[num];
                num = num + 1;
            }
        </script>
    </head>
    <body>
        <img id="light" src="redlight.png">
        <button onclick="lightsequence()">Change Lights</button>
    </body>
</html>

我编写了这段代码,每次点击按钮时图像按顺序依次更改,但是我无法想到如何在持续点击时反转顺序,即交通灯红黄绿黄红等。我对jQuery不熟悉,所以最好不要使用它们,但如果有人能够完全解释使用jQuery的工作原理,那就必须使用。

2个回答

2

取模运算符 在这种情况下非常方便:

document.getElementById('light').src = trafficlights[num++ % trafficlights.length];

这里是一个演示:

var trafficlights = [
 'https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/48x48/Circle_Red.png', 
 'https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/48x48/Circle_Yellow.png', 
 'https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/48x48/Circle_Green.png'
];
var num = 1

function lightsequence() {
  document.getElementById('light').src = trafficlights[num++ % trafficlights.length];
}
<img id="light" src="https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/48x48/Circle_Red.png">
<button onclick="lightsequence()">Change Lights</button>


这个程序可以正常工作,但是它从绿色跳回到红色,而我希望它通过黄色改变回到红色。 - MATTHEW PARKER
1
是的,我已经解决了,我只需要在变量容器的末尾添加另一张黄色图片。 - MATTHEW PARKER
我已经对代码进行了修改并解决了原始问题,但我想知道是否有一种方法可以使灯光序列在每次单击按钮时自动运行一次,并在红色比其他颜色停留时间稍长的情况下暂停一段时间? - MATTHEW PARKER

0
改变灯光

function lightsequence(){
  
document.getElementById("light").src

if(document.getElementById("light").src=="https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/48x48/Circle_Red.png"){
     document.getElementById("light").src="https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/48x48/Circle_Yellow.png"
    
}else if(document.getElementById("light").src=="https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/48x48/Circle_Yellow.png"){
   document.getElementById("light").src="https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/48x48/Circle_Green.png"
                         
}else{
   document.getElementById("light").src="https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/48x48/Circle_Red.png"
      
      }
}
<img id="light" src="https://cdn3.iconfinder.com/data/icons/softwaredemo/PNG/48x48/Circle_Red.png">
<button onclick="lightsequence()">Change Lights</button>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接