我有改变容器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,只需点击红线即可。 提前感谢您的关注!
答案 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/