最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

html - Traffic light Sequence Javascript - Stack Overflow

programmeradmin4浏览0评论

Here is my code for a traffic light's sequences. I was wondering how I could add a timer in to change the traffic light colour every 3 seconds, for example, when the button is clicked. Thanks!

<!DOCTYPE html> 
<html> 
<body>  
  <h1>JavaScript Task 3</h1> 
  <p>This is  my Traffic Light script</p> 
  <img id="light" src="./assets/red.jpg">
  <button type="button" onclick="changeLights()">Change Lights</button>  
  <script> 
    var list = ["./assets/red.jpg","./assets/redamber.jpg", "./assets/green.jpg","./assets/amber.jpg" ];
    var index = 0;
    function changeLights() {
      index = index + 1;      
      if (index == list.length) 
        index = 0;      
      var image = document.getElementById('light');     
      image.src = list[index]; 
    } 
  </script>  
</body> 
</html>   

Here is my code for a traffic light's sequences. I was wondering how I could add a timer in to change the traffic light colour every 3 seconds, for example, when the button is clicked. Thanks!

<!DOCTYPE html> 
<html> 
<body>  
  <h1>JavaScript Task 3</h1> 
  <p>This is  my Traffic Light script</p> 
  <img id="light" src="./assets/red.jpg">
  <button type="button" onclick="changeLights()">Change Lights</button>  
  <script> 
    var list = ["./assets/red.jpg","./assets/redamber.jpg", "./assets/green.jpg","./assets/amber.jpg" ];
    var index = 0;
    function changeLights() {
      index = index + 1;      
      if (index == list.length) 
        index = 0;      
      var image = document.getElementById('light');     
      image.src = list[index]; 
    } 
  </script>  
</body> 
</html>   
Share Improve this question edited May 15, 2016 at 0:21 Jonathan Eustace 2,48713 gold badges34 silver badges54 bronze badges asked Apr 28, 2016 at 16:22 K. SmithK. Smith 331 gold badge1 silver badge9 bronze badges 5
  • 2 setInterval(changeLights,3000)... – Niet the Dark Absol Commented Apr 28, 2016 at 16:23
  • Has your teacher taught you about setTimeout or setInterval? – Mike Cluck Commented Apr 28, 2016 at 16:23
  • 1 stackoverflow./questions/36920320/… stackoverflow./questions/34653900/… stackoverflow./questions/37906626/… stackoverflow./questions/35920989/… stackoverflow./questions/31747318/… stackoverflow./questions/37796563/… – le_m Commented Jun 21, 2016 at 9:21
  • Can we auto tag "traffic light sequence" questions as duplicates? – evolutionxbox Commented Feb 17, 2017 at 9:58
  • Sure, feel free – K. Smith Commented Feb 21, 2017 at 19:13
Add a ment  | 

2 Answers 2

Reset to default 2

Use the setInterval function.

The first parameter is the function you want to call and the second parameter is how often it should be called, in milliseconds.

var timer = setInterval(changeLights,3000);

var list = ["./assets/red.jpg","./assets/redamber.jpg",     "./assets/green.jpg","./assets/amber.jpg" ];
var index = 0;
function changeLights() {
     index = index + 1;      
if (index == list.length) 
index = 0;      
var image = document.getElementById('light');     
image.src=list[index]; } 
  var timer = setInterval(changeLights,3000);
<h1>JavaScript Task 3</h1> 
<p>This is  my Traffic Light script</p> 
<img id="light" src="./assets/red.jpg"> <button type="button" 
onclick="changeLights()">Change Lights</button>  

You can set a static timer with setTimeout(function, time);

In your case, if you want a repeating timer every 3 seconds constantly, you can have setTimeout run every time the changeLights() function ends

See w3schools article on timing

var timer;
function changeLights() {
    index = index + 1;      
    if (index == list.length) 
    index = 0;      
    var image = document.getElementById('light');     
    image.src=list[index];

    timer = setTimeout("changeLights", 3000);
}

With that change, once you start the lights, the function will repeat every 3 seconds.

The timer variable also alows you to stop the timer (perhaps in your case with another button) with:

clearTimeout(timer);

Hope this helps

发布评论

评论列表(0)

  1. 暂无评论