js中this和that
来源:互联网 发布:江西国科军工集团 知乎 编辑:程序博客网 时间:2024/05/29 19:35
在tab选项卡中做一个延迟加载时,this和that的问题。
window.onload=function(){
var index=0;
var timer=null;
var lis=$('notice-tit').getElementsByTagName('li'),
divs=$('notice-con').getElementsByTagName('div');
for(var i=0;i<lis.length;i++){
lis[i].id=i;
lis[i].onmouseover=function(){
var that=this;
//如果存在准备执行的计时器,立刻清除
if(timer){
clearTimeout(timer);
timer=null;
}
timer=setTimeout(function(){
for(var j=0;j<lis.length;j++){
lis[j].className='';
divs[j].style.display='none';
}
lis[that.id].className='select';
divs[that.id].style.display='block';
},500)
}
}
}
不加第二个红色代码行时,当然后面的that换成this,出现报错:Uncaught TypeError: Cannot set property 'className' of undefined。
查过之后错误可能有两种:一是li标签没有加上id;二是this指的对象不对。
在我的代码中错误是第二种,this指代的对象不对,在setTimeout里面的this指的是window,而不再是li标签了。
因为setInterval和setTimeout属于window的方法,window为它们的对象。
但是在setTimeout外面this仍然指li标签,故用that变量来引用当时滑过的li标签。
- js中this和that
- js中 this与that
- Javascript中object的this和that
- 小程序中 that和this用法
- js中的四种调用,this、that
- js中的四种调用,this、that
- js中with和this的用法
- JS 中 和 JQuery 的 this 关键字
- javascript中var that=this
- javascript中var that=this
- javascript中var that=this
- javascript中var that=this
- 微信小程序 this和that用法
- js this和$(this)区别
- jquery中this与$(this)的用法区别.和于js中的this区别
- jquery中this与$(this)的用法区别.和于js中的this区别
- jquery中this与$(this)的用法区别.和于js中的this区别
- jquery中this与$(this)的用法区别.和于js中的this区别
- SQLi-Labs Lesson 1-8 notes
- iOS App提交指南-协议、税务和银行业务
- Java抽象类和接口
- PHP入门(2) - 数据类型
- set接口及实现类
- js中this和that
- 杭电2715 Herd Sums
- hdu1108最小公倍数(欧几里得法求最小公倍数)
- UItableView
- Poj 1061 青蛙的约会(扩展欧几里得)
- 1096. Consecutive Factors (20)
- App Store App申请审核加速
- c语言之素数距离问题
- Struts2:在Interceptor中获取action中的参数值