<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#div1{
width: 200px;
height: 200px;
background: red;
position: absolute;
top: 50px;
left: 0px;
}
</style>
<script>
var timer=null;
function startmove()
{
var odiv=document.getElementById('div1');
timer=setInterval(function(){
if(odiv.offsetLeft==300)
{
clearInterval(timer);
}
else
{
odiv.style.left=odiv.offsetLeft+10+'px';
}
}, 30);
}
</script>
</head>
<body>
<button onclick="startmove()">开始</button>
<div id="div1">
</div>
</body>
</html>
这里的if里面的offsetleft换成style.left为什么就不行
看到了没,这就是相同一个div的left和offsetLeft的值,两者不一定相等,而且用left会取到你设置的样式值,比如100px或者40%;
因为 style.left返回的时候后面会加上"px" 没办法判断。
try
if(odiv.style.left== '300px')
left是获取该dom元素的css,所以如果是固定值则带上'px',可读写
offsetLeft 是一个只读属性,返回当前元素左上角相对于 HTMLElement.offsetParent 节点的左边界偏移的像素值。