2016-03-01 34 views
2

我目前正在记事本上工作,但错误不断发生。我的代码有什么问题?我正在尝试使用对象数组打开交通灯。这是一个通过数组来完成的义务。交通灯onload功能

<html> 

<body onload="loop()"> 
<div style="background:black;width:75px;height:140px;margin:auto;"> 
<div id ="red" style="background:red;width:40px;height:40px;border-radius:40px;margin:auto;"></div> 
     <div id = "yellow" style="background:#3F4A00;width:40px;height:40px;border-radius:40px;margin:auto"></div> 
     <div id = "green" style="background:#044A00;width:40px;height:40px;border-radius:40px;margin:auto"></div> 
    <!--The style refers to css, the background --> 
    </div> 
    <script> 
    var redlight = document.getElementById('redlight'); 
    var yellowlight = document.getElementById('yellowlight'); 
    var greenlight = document.getElementById('greenlight'); 
    var colors = ["rgb(255, 0, 0)",'rgb(82, 2, 2)','rgb(255, 255, 0)','rgb(63, 74, 0)','rgb(0, 128, 0)','rgb(4, 74, 0)']; 
function loop() { 

    if (redlight.style.backgroundColor == colors[0]){ 
     redlight.style.backgroundColor = colors[1]; //switch off red 
     yellowlight.style.backgroundColor = colors[2]; //switch on yellow 
    } 
    else if (yellowlight.style.backgroundColor == colors[2]) { 
     yellowlight.style.backgroundColor = colors[3]; //switch off yellow 
     greenlight.style.backgroundColor = colors[4]; //switch on green 
    } 
    else if (greenlight.style.backgroundColor == colors[4]) { 
     greenlight.style.backgroundColor = colors[5]; //switch off green 
     redlight.style.backgroundColor = colors[0]; //switch on red 
    } 
      setInterval(function() { 
},3000); //this sets the intervals for each traffic light to change colors 
} 
</script> 
</body> 
</html> 

回答

0

你正在做的getElementById像

var redlight = document.getElementById('redlight'); 
var yellowlight = document.getElementById('yellowlight'); 
var greenlight = document.getElementById('greenlight'); 

和你的div有IDS:红,黄,绿

<div id ="red" style="background:red;width:40px;height:40px;border-radius:40px;margin:auto;"></div> 
<div id = "yellow" style="background:#3F4A00;width:40px;height:40px;border-radius:40px;margin:auto"></div> 
<div id = "green" style="background:#044A00;width:40px;height:40px;border-radius:40px;margin:auto"></div> 

更改div编号至红灯,yellowlight和绿灯。

<div id ="redlight" style="background:red;width:40px;height:40px;border-radius:40px;margin:auto;"></div> 
<div id = "yellowlight" style="background:#3F4A00;width:40px;height:40px;border-radius:40px;margin:auto"></div> 
<div id = "greenlight" style="background:#044A00;width:40px;height:40px;border-radius:40px;margin:auto"></div> 

另外

  1. 变化对红灯为背景色:#FF0000
  2. 动议的setInterval循环函数的外部。
  3. 将setInterval改为setInterval(loop,3000);

这是一个工作js小提琴。 https://jsfiddle.net/n1b1htaz/1/

+0

Thak你我改变了,但它仍然不起作用? – Abass

+0

确定一秒。我会设置一个JS小提琴。 – kemiller2002

+0

oops红色不起作用。多一秒。 – kemiller2002