
红绿灯
// 上代码
<!DOCTYPE html>
<html lang="en">
<head>
<title> </title>
<style>
* { margin: 0; padding:0}
.box {
width: 250px;
height: 52px;
padding: 15px 30px;
border: 2px solid #ccc;
border-radius: 50px;
margin: 0 auto;
}
.box .count {
width: 60px;
height: 50px;
line-height: 50px;
color: rgb(27, 4, 4);
font-size: 50px;
margin-left: 10px;
border: 1px solid #fff
}
.box div {
margin-left: 5px;
float: left;
width: 50px;
height: 50px;
border-radius: 50px;
border: 1px solid #666;
}
.gray {
background-color: #eee;
}
.red {
background-color: red;
}
.yellow {
background-color: yellow;
}
.green {
background-color: #26ff00;
}
</style>
</head>
<body>
<div class="box">
<div id='red'></div>
<div id='green'></div>
<div id='yellow'></div>
<div id='count' class='count'></div>
</div>
<script type="text/javascript">
function $(id){ return document.getElementById(id)}
var lamp= {
red: {
obj: $('red'),
style: ['red', 'gray', 'gray'],
timeOut: 30,
next: 'green'
},
green: {
obj: $('green'),
style: ['gray', 'green', 'gray'],
timeOut: 35,
next: 'yellow'
},
yellow: {
obj: $('yellow'),
style: ['gray', 'gray', 'yellow'],
timeOut: 5,
next: 'red'
},
changeStyle(style){
this.red.obj.className=style[0];
this.green.obj.className= style[1];
this.yellow.obj.className= style[2];
}
};
var count = {
obj:$('count'),
change: function(num){
this.obj.innerHTML= (num>=10)? num: '0'+num;
}
}
var now= lamp.green;
var timeout= now.timeOut;
lamp.changeStyle(now.style);
count.change(timeout);
setInterval(function(){
if(--timeout <= 0){
now= lamp[now.next];
timeout= now.timeOut;
lamp.changeStyle(now.style);
}
count.change(timeout);
}, 1000 );
</script>
</body>
</html>