box1.onmouseover = function () {
startMove();
}
你单词拼错了
加入if-else判断主要是为了判断何时结束定时器的运行,如果没有结束定时器的运行,那么动画会一直运动下去,要变的属性会一直变下去不会停止,肯定不行的,所以加个判断何时停止,然后手动停止定时器,那么动画也就停止了。
先设置一个class再去控制这个class,哈哈
因为你的样式里面没有设置外间距,所以判断的结果不可能等于0,
你要么把判断条件改成>=0;
要么在头部样式(style)里面添加
*{
margin:0;
padding:0;
}
function startMove(iTarget)函数里你只有一个参数,但是调用的时候你传了两个 startMove(10,0);
改成只传目标值就可以了;
oDiv.onmousemove=function(){ startMove(0); } oDiv.onmouseout=function(){ startMove(-200); }
。。。。。。
style里面 少设置一个div
是window.onload哦
var oDiv=document.getElementById("div1");这是正确的 你的代码get写成grt了,取不到div,没法绑定事件。仔细检查自己的代码,多用开发者工具查看报错情况就可以避免这种不应该出现的错误。
= =抱歉 最后宽度首字母大写了 这问题怎么删除..
你的鼠标移入移出事件是绑定在蓝色部分的,而蓝色部分是包含在div里的;你换成绑定在big上 就好了
var timer=null; function startMove() { clearInterval(timer); timer = setInterval(function () { if ($("#div1").offset().left == 0) { clearInterval(timer); } else { $("#div1").css("left", $("#div1").offset().left + 10) } }, 30) } 你的if条件判断应该在定时器内部判断
你这个是大写,我的出毛病是……startMove 写成 strtMove……哎
没传参数
代码呢
有好多的编辑器都可以如dw。但大部分都是收费的,你可以试试这个HBuilderX.1.0.1.20181012免费的,而且很小
定时器,timer=setInterval(function(){
//里面执行的操作
},30);//30表示:每隔30毫秒,就执行一次function里面的操作
==是为了精准控制,如果你用>=去控制停止,可能停的位置跟你想要看到的有所偏差。
你要别人猜么
第58行代码错了
不是da.style.width=da.offsetLeft+speed+"px";
时 da.style.left=da.offsetLeft+speed+"px";
目标值就是方块即将出现的宽度,是变化的,不是定值,你假设多少就是多少;
假设:当前位置是200,目标位置是0,这时,想要达到目标位置,speed就是负的
当前位置是100,目标位置是50,这时,想要达到目标位置,speed就是负的
当前位置是0,目标位置是200,这时,想要达到目标位置,speed就是正的
总结,这里的目标值是任意值。(不知道我是否表达清楚)
你的html结构写错了
<div id="s">广<br>告</div>
<div id="ss"></div>
改成<div id="s"><span id='ss'>广告</span></div>
getElementById I要大写
已解决
把你的代码贴出来啊
当你多次触碰时,上一次的定时器timer被
var timer=null;
重新赋值了(即timer这个定时器的对象找不到了),导致clearInterval(timer),起不了作用。
应该将var timer=null;写在函数的外面
每次鼠标移入移出时先关闭定时器,然后再根据下面的条件决定是否重新开启一个定时器.
跟css中的{margin:0;padding:0;} 没有关系,你的代码中,判断offsetLeft 的条件改为: if(odiv.offsetLeft>=0) 它就停下来了 ,因为在不断移动的过程中,不一定有0这个值
还有一个问题,进入startMove()时, 需要先清除一下定时器,目的是保证同时只有一个定时器在运行,你的代码还给你,就改了两个地方:
<!DOCTYPE html>
<html>
<head>
<title>动画</title>
<style type="text/css">
#box{
width: 200px;
height: 100px;
background-color: black;
position: relative;
left:-200px;
}
#share{
width: 30px;
height: 50px;
background-color: blue;
position: absolute;
left:200px;
}
</style>
</head>
<body>
<div id="box"><span id="share"></span></div>
<script type="text/javascript">
window.onload = function() {
var odiv = document.getElementById('box');
odiv.onmouseover = function() {
startMove();
}
var timer = null;
function startMove() {
clearInterval(timer); // debug 1
timer = setInterval(function() {
console.log(odiv.offsetLeft)
if (odiv.offsetLeft >= 0) { // debug 2
clearInterval(timer);
} else {
odiv.style.left = odiv.offsetLeft + 10 + 'px';
}
},
300)
}
}
</script>
</body>
</html>