求大神帮忙修改成函数传参的形式

qingwadaxia_1 2017-08-28 09:41:33
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>鼠标移入移出定时移动效果</title>
<style>
*{margin:0;padding:0;}
#aa{width:200px;height:200px;background:red;position:relative;left:-200px;top:0;}
#aa span{width:20px;height:50px;background:blue;position:absolute;left:200px;top:75px;color:#fff;}
</style>
</head>
<body>

<div id="aa"><span>分享</span></div>

<script>
var aa = document.getElementById("aa");
var time = null;
aa.onmouseenter=function(){
clearInterval(time);
time=setInterval(function(){
if(aa.offsetLeft==0){
clearInterval(time);
}else{
aa.style.left=aa.offsetLeft+10+"px";
}
},20);
};


aa.onmouseleave=function(){
clearInterval(time);
time = setInterval(function(){
if(aa.offsetLeft==-200){
clearInterval(time);
}else{
aa.style.left=aa.offsetLeft-10+"px";
}
},20);

}
</script>
</body>
</html>


上面那两个鼠标移入 移出事件的函数,想保留一个 通过函数传参的方式去调用,请问如何做
...全文
185 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2017-08-28
  • 打赏
  • 举报
回复
引用 5 楼 qingwadaxia_1 的回复:
[quote=引用 4 楼 jslang 的回复:]

	var aa = document.getElementById("aa");
	var time = null;
	function animate(a,b){
		clearInterval(time);
		time=setInterval(function(){
			if(aa.offsetLeft==a){
				clearInterval(time);
			}else{
			aa.style.left=aa.offsetLeft+b+"px";
			}
		},20);
	};
	aa.onmouseenter=animate.bind(null,0,10);
	aa.onmouseleave=animate.bind(null,-200,-10);
animate.bind 请问这是什么意思,还有为什么要传个null进去呢[/quote] https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
似梦飞花 2017-08-28
  • 打赏
  • 举报
回复
aa.onmouseenter=aa.onmouseout=function(e){ var type=e.type; if(type=='mouseenter'){//...}else{//...} } 试试
qingwadaxia_1 2017-08-28
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:

        function MEevent(offset,step,delay) {
            clearInterval(time);
            time = setInterval(function () {
                if (aa.offsetLeft == offset) {
                    clearInterval(time);
                } else {
                    aa.style.left = aa.offsetLeft + step + "px";
                }
            }, delay);
        }
        var aa = document.getElementById("aa");
        var time = null;
        aa.onmouseenter = aa.onmouseleave = function (e) {
            var enter = (e || window.event).type == 'mouseenter';
            MEevent(enter ? 0 : -200, enter ? 10 : -10, 20);
        }
Web开发学习资料推荐 jqGrid单元格编辑配置,事件及方法
谢谢 不过您这个我感觉有点复杂。
qingwadaxia_1 2017-08-28
  • 打赏
  • 举报
回复
引用 4 楼 jslang 的回复:

	var aa = document.getElementById("aa");
	var time = null;
	function animate(a,b){
		clearInterval(time);
		time=setInterval(function(){
			if(aa.offsetLeft==a){
				clearInterval(time);
			}else{
			aa.style.left=aa.offsetLeft+b+"px";
			}
		},20);
	};
	aa.onmouseenter=animate.bind(null,0,10);
	aa.onmouseleave=animate.bind(null,-200,-10);
animate.bind 请问这是什么意思,还有为什么要传个null进去呢
天际的海浪 2017-08-28
  • 打赏
  • 举报
回复

	var aa = document.getElementById("aa");
	var time = null;
	function animate(a,b){
		clearInterval(time);
		time=setInterval(function(){
			if(aa.offsetLeft==a){
				clearInterval(time);
			}else{
			aa.style.left=aa.offsetLeft+b+"px";
			}
		},20);
	};
	aa.onmouseenter=animate.bind(null,0,10);
	aa.onmouseleave=animate.bind(null,-200,-10);
  • 打赏
  • 举报
回复

        function MEevent(offset,step,delay) {
            clearInterval(time);
            time = setInterval(function () {
                if (aa.offsetLeft == offset) {
                    clearInterval(time);
                } else {
                    aa.style.left = aa.offsetLeft + step + "px";
                }
            }, delay);
        }
        var aa = document.getElementById("aa");
        var time = null;
        aa.onmouseenter = aa.onmouseleave = function (e) {
            var enter = (e || window.event).type == 'mouseenter';
            MEevent(enter ? 0 : -200, enter ? 10 : -10, 20);
        }


Web开发学习资料推荐
jqGrid单元格编辑配置,事件及方法
qingwadaxia_1 2017-08-28
  • 打赏
  • 举报
回复
不是啊。我就是想要类似这样的 <script> var aa = document.getElementById("aa"); var time = null; aa.onmouseenter=function(a,b){ clearInterval(time); time=setInterval(function(){ if(aa.offsetLeft==0){ clearInterval(time); }else{ aa.style.left=aa.offsetLeft+10+"px"; } },20); }; </script> 只保留一个 然后去调用函数 传数值进去

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧