javascript执行时间间隔的函数

时间:2015-02-17 11:29:01

标签: javascript html css

我有改变容器div内容的简单功能。 容器<table>内有一个<div>,有<td>个,javascript只是向左移动<table>并且它有效,但onclick我需要以时间间隔执行移动功能。

 <div onclick="move(this.children[0])" class="table_wrap">
 <div class="table_scroll" style="left: 0px;">

 <table cellpadding="0" cellspacing="5" width="1920px">
    <tr>
        <td style="background-color: red;">
            a
        </td>
        <td style="background-color: blue;">
            b
        </td>
    </tr>
 </table>

 </div>
 </div>

   <script language="javascript">
 function move(elem) {

          var left = 0

          function frame() {

            left -= 5;  // update parameters 

            elem.style.left = left + 'px' // show frame 

            if (left == -965)  // check finish condition
              clearInterval(id)
          }
          var id = setInterval(frame, 1) // draw every 10ms
        }

       </script>

和CSS:

 <style type="text/css">
 .table_wrap{
 position:relative;
 overflow:hidden;
 width: 967px;
 height: 250px;
 left: -2px;
 top: 5px;
 }
 .table_wrap .table_scroll{
 position: absolute;
 text-align:center;
 white-space:nowrap;
 }
 </style>

我尝试使用setInterval,但失败了。

http://jsfiddle.net/hqztm2dt/1/这里是JSfiddle,只需点击红线即可。 提前感谢您的关注!

2 个答案:

答案 0 :(得分:4)

  

如果您需要按时间间隔移动它,请参阅:   http://jsfiddle.net/gsddsxgy/2/(此处时间间隔为3毫秒)

html:

<div  class="table_wrap">
 <div id='move' class="table_scroll" style="left: 0px;">

 <table cellpadding="0" cellspacing="5" width="1920px">
    <tr>
        <td style="background-color: red;">
            a
        </td>
        <td style="background-color: blue;">
            b
        </td>
    </tr>
 </table>

 </div>
 </div>

JS:

setInterval(function(){ 

var elem=document.getElementById('move');
 var left = 0

          function frame() {

            left -= 5;  // update parameters 

            elem.style.left = left + 'px' // show frame 

            if (left == -965)  // check finish condition
              clearInterval(id)
          }
          var id = setInterval(frame, 1) // draw every 10ms






    }, 3000);
  

如果你需要在点击时移动div,但是在一点时间间隔之后,请参阅   这http://jsfiddle.net/gsddsxgy/

代码:

function move(elem) {
setTimeout(function(){ 


 var left = 0

          function frame() {

            left -= 5;  // update parameters 

            elem.style.left = left + 'px' // show frame 

            if (left == -965)  // check finish condition
              clearInterval(id)
          }
          var id = setInterval(frame, 1) // draw every 10ms



}, 1000);

        }

答案 1 :(得分:0)

你的代码在jsFiddle中的问题是在尝试调用它时没有定义move函数 - 如果使用addEventListener,你可以使用javascript而不是onClick属性将方法绑定到click事件。使用您的代码:

var elem = document.getElementById('wrapper');
elem.addEventListener('click', move);

function move() {

    var left = 0

    function frame() {

        left -= 5;  // update parameters 

        elem.style.left = left + 'px' // show frame 

        if (left == -965)  // check finish condition
            clearInterval(id)
        }

    var id = setInterval(frame, 1) // draw every 10ms
}

JS小提琴 - http://jsfiddle.net/b1q7poj4/2/