如何修复我的红绿灯代码?

时间:2016-04-03 13:19:04

标签: javascript html css light

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <style type='text/css'>

                .traffic-light {
                  width: 100%;
                }

                .off {
                  background-color: transparent!important;
                }

                .traffic-light {
                  margin: 0 auto;
                  width: 10%;
                  min-width: 180px;
                  border: 5px solid black;
                }

                .traffic-light div {
                  margin: 0 auto;
                  width: 150px;
                  height: 150px;
                  border: 5px solid black;
                  border-radius: 50%;
                  margin-top: 5px;
                  margin-bottom: 5px;
                }

                .red {
                  background-color: red;
                }

                .yellow {
                  background-color: yellow;
                }

                .green {
                  background-color: green;
                }

    </style>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Traffic Lights Controller</title>

<script type="text/javascript" >

function trafficLights()

    { 
     var sequenceData = [ [ 5, 1, 0, 0 ], [ 2, 1, 1, 0 ], [ 5, 0, 0, 1 ], [ 3, 0, 1, 0 ]  ],
         lights = [],
         index = 0;

     for( var i = 0, elemId; ( elemId = arguments[ i ] ); i++ )     
      lights[ i ] = document.getElementById( elemId );

     function display()
     {
      if( index >= sequenceData.length ) 
       index = 0;

      for( var i = 0, cv, dLen = lights.length; i < dLen; i++ )
       lights[ i ].style.backgroundColor = ( sequenceData[ index ][ i+1 ] ? lights[ i ].id.match(/^[a-z]+/i).toString() : '#000' );  

      setTimeout( display, sequenceData[ index++ ][ 0 ] * 1000 );
     } 

     display(); 
    }


    window.onload = function(){ trafficLights( "red-light", "yellow-light", "green-light" ); };

    </script>
    </head>
        <body>
            <div id="wrapper">
                <h1>Traffic Lights Controller</h1>
                <div id="red-light"></div>
                <div id="yellow-light"></div>
                <div id="green-light"></div>
            </div>
        </body>
    </html>

我的代码无效?我是编码的新手,我不确定为什么,但<style>标签之间的位导致了问题,或者它不能与其余代码一起使用。

1 个答案:

答案 0 :(得分:0)

将课程traffic-light添加到wrapper,如下所示

<div id="wrapper" class="traffic-light">
    <h1>Traffic Lights Controller</h1>
    <div id="red-light"></div>
    <div id="yellow-light"></div>
    <div id="green-light"></div>
</div>

DEMO

function trafficLights()

    { 
     var sequenceData = [ [ 5, 1, 0, 0 ], [ 2, 1, 1, 0 ], [ 5, 0, 0, 1 ], [ 3, 0, 1, 0 ]  ],
         lights = [],
         index = 0;

     for( var i = 0, elemId; ( elemId = arguments[ i ] ); i++ )     
      lights[ i ] = document.getElementById( elemId );

     function display()
     {
      if( index >= sequenceData.length ) 
       index = 0;

      for( var i = 0, cv, dLen = lights.length; i < dLen; i++ )
       lights[ i ].style.backgroundColor = ( sequenceData[ index ][ i+1 ] ? lights[ i ].id.match(/^[a-z]+/i).toString() : '#000' );  

      setTimeout( display, sequenceData[ index++ ][ 0 ] * 1000 );
     } 

     display(); 
    }


    window.onload = function(){ 
      trafficLights( "red-light", "yellow-light", "green-light" ); 
    };
.traffic-light {
  width: 100%;
}

.off {
  background-color: transparent!important;
}

.traffic-light {
  margin: 0 auto;
  width: 10%;
  min-width: 180px;
  border: 5px solid black;
}

.traffic-light div {
  margin: 0 auto;
  width: 150px;
  height: 150px;
  border: 5px solid black;
  border-radius: 50%;
  margin-top: 5px;
  margin-bottom: 5px;
}

.red {
  background-color: red;
}

.yellow {
  background-color: yellow;
}

.green {
  background-color: green;
}
<div id="wrapper" class="traffic-light">
    <h1>Traffic Lights Controller</h1>
    <div id="red-light"></div>
    <div id="yellow-light"></div>
    <div id="green-light"></div>
</div>