JavaScript-怎么让setTimeout使用this时指向正确的对象?

UI设计界面 UI设计界面 主题:1059 回复:2190

JavaScript-怎么让setTimeout使用this时指向正确的对象?

归属感 发布于 2017-05-22 字数 1058 浏览 1084 回复 2

下面代码的console.log(this); //this是指向window了 .而不是li元素本身..要怎么做才能让它指向li

<ul id="list">
<li>
<a href="" title="iphone_ios">苹果</a>
<div class="popDiv">

</div>
</li>
<li>
<a href="" title="安卓_java">google</a>
<div class="popDiv">

</div>
</li>
<li>
<a href="" title="wp">微软</a>
<div class="popDiv">

</div>
</li>
<li>
<a href="" title="mysql">甲骨文</a>
<div class="popDiv">

</div>
</li>
<li>
<a href="" title="全球最大的社交网站">facebook</a>
<div class="popDiv">

</div>
</li>
</ul>

var list = document.getElementById("list");
var oli = list.getElementsByTagName("li");
for(var i=0; i<oli.length; i++){
oli[i].onmouseover = function(){
setTimeout(arguments.callee,20);
console.log(this);
}

}

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(2

归属感 2017-09-13 2 楼

你将

 setTimeout(arguments.callee,20);

换成

 setTimeout(arguments.callee.caller,20);

这样console.log(this)指向的就是li对象了

偏爱自由 2017-07-20 1 楼

在jQuery中我一般是这样用的:

$('li').mouseover(function(){
  setTimeout(arguments.callee,20);
  console.log($(this).text);
});

不知道是不是适合您的场景。