为了账号安全,请及时绑定邮箱和手机立即绑定

这是一份正确的代码,但是我有几个问题想问下高手.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>导航菜单</title>
<style type="text/css">
* { margin: 0; padding: 0; font-size: 14px; }
a { color: #333; text-decoration: none }
ul { list-style: none; height: 30px; border-bottom: 5px solid #F60; margin-top: 20px; padding-left: 50px; }
ul li { float: left }
ul li a { display: block; height: 30px; text-align: center; line-height: 30px; width:120px; background: #efefef; margin-left: 1px; }
a.on, a:hover { background: #F60; color: #fff; }
</style>
<script>
window.onload=function(){
    var aA=document.getElementsByTagName('a');
	for(var i=0; i<aA.length; i++){
		aA[i].onmouseover=function(){
			var This=this;
		clearInterval(This.s);
			This.s=setInterval(function(){
					This.style.width=This.offsetWidth+8+"px";
					if(This.offsetWidth>=160)
					clearInterval(This.s);
				},30)
		}
		aA[i].onmouseout=function(){
				clearInterval(this.s);
				var This=this;
				this.s=setInterval(function(){
					This.style.width=This.offsetWidth-8+"px";
					if(This.offsetWidth<=120){
						This.style.width='120px';
						clearInterval(this.s);
					}
				},30)
		}
	}
}
</script>
</head>
<body>
<ul>
    <li><a class="on" href="#">首  页</a></li>
    <li><a href="#">新闻快讯</a></li>
<li><a href="#">产品展示</a></li>
    <li><a href="#">售后服务</a></li>
    <li><a href="#">联系我们</a></li>
</ul>
</body>
</html>

我发现后面清除的那段代码中为什么clearInterval(this.s)里面为什么不能是clearInterval(This.s)我发现里面的变量名该成后者就只会增加长度不会减少了.那么前面的声明Var This=this 有什么用呢?说了是调用,为什么后面清除就只需要this呢?

正在回答

2 回答

真心实测,有效果

57e3888000016fe604340426.jpg

57e388810001eea904580438.jpg

57e388820001ffcb04560428.jpg

上面三张图里的代码都可以,从语法上也是讲的通的,不存在没有效果,不知道楼主说的是什么情况?


0 回复 有任何疑惑可以回复我~

因为你的onmouseout方法里定义的是 this.s=setInterval(function(),所以你后面也有用this.s。。看清楚大小写

0 回复 有任何疑惑可以回复我~
#1

打边炉

后面也要用。。打错字
2016-09-04 回复 有任何疑惑可以回复我~
#2

最近的距离是多少3456060 提问者

可能是我的提问没这么明白?我的意思就是我把后面的变量名称改成This.s=setInterval(function() 不能实现。而不是大小写的问题,我知道清除里面的变量名称是定时器里面的变量名称。
2016-09-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
导航条菜单的制作
  • 参与学习       123899    人
  • 解答问题       813    个

水平、垂直、圆角导航条菜单,让您的技术探索之路更高效

进入课程

这是一份正确的代码,但是我有几个问题想问下高手.

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信