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

为什么一定要var This=this?

如题,为什么不能直接使用this?http://www.imooc.com/code/1736


<!DOCTYPE html>

<html>

<head>

<meta charset="GB2312">

<title></title>

<style type="text/css">

ul{list-style-type: none;}

li{width: 160px;height: 50px;font-size: 16px;font-family: "微软雅黑";font-weight: bolder;background-color: coral;text-align: center;line-height: 50px;cursor: pointer;float: left;border-top-left-radius: 2em;border-top-right-radius: 2em;}

li:hover{background-color: #2E8B57;color: whitesmoke;height: 60px;line-height: 60px;margin-top: -10px;}

.frist{background-color: #2E8B57;color: whitesmoke;border: 2px solid deepskyblue;height: 60px;line-height: 60px;margin-top: -10px;}

.bka{border:2px solid darkred;}

</style>

<script type="text/javascript">

window.onload=function(){

var a=document.getElementsByTagName("ul")[0];

for(var i=3;i<a.childNodes.length-1;i++){

a.childNodes[i].className="bka";

i=i+1;

}

var li=document.getElementsByTagName("li");

for(var n=3;n<a.childNodes.length-1;n++){

a.childNodes[n].onmouseover=function(){

var This=this;

This.time=setInterval(function(){

This.style.border="2px solid deepskyblue";

This.style.width=This.offsetWidth+8+"px";

if(This.offsetWidth>=120){

clearInterval(This.time)

}

},30)

}

a.childNodes[n].onmouseout=function(){

this.style.border="2px solid darkred";

}

n=n+1;

}

}

</script>

</head>

<body>

<ul id="woqu">

<li class="frist"><a href="#"></a>HTML</li>

<li><a href="#"></a>CSS</li>

<li><a href="#"></a>MICROSOFT</li>

<li><a href="#"></a>SURFACEBOOK</li>

<li><a href="#"></a>WINDOWS10</li>

<li><a href="#"></a>ASD</li>

</ul>

</body>

</html>


正在回答

3 回答

this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,

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

setInterval 这个是js中window对象的方法 调用这个方法之后 this指向的对象就不是原来的a标签了

http://www.w3school.com.cn/jsref/dom_obj_window.asp 可以去看下介绍

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

缓存变量,加快运行速度

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

飞天意大利面神兽 提问者

嗯?var This=this; This.time=setInterval(function(){ This.style.border="2px solid deepskyblue"; This.style.width=This.offsetWidth+8+"px",这一段我不声明var This=this,直接用this,这个程序没法正常运行啊。下面的却可以,不明觉厉。
2016-05-19 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

为什么一定要var This=this?

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