返回信息流<a id="Blog" href="blog.html" onclick="loadingfunc()" >我对一个<a>调用了函数。。
函数长这样。。我是想要检查一下$(this)是否正确选择到了标签a,
function loadingfunc(){
var a=$(this).height();
alert(a);
}
但是返回值不是a的高,是window的高。。不是很理解。。有人能帮忙解答下吗。。
另外当我 var a=$(this).offset().top时。。提示undifined。。按id就能正确选取。。求帮忙
这是一条镜像帖。来源:北邮人论坛 / www-technology / #35445同步于 2016/4/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
【求助】关于javascript的this
shiixiaoyu
2016/4/13镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
作为一个普通函数来调用this会指向window,
作为对象方法来调用this会指向对象,
你这个函数要是在a这个标签事件里直接获取高度,this是可以指向a,但是你用了函数调用的方式,便指向了window。
解决方法:
1.在你a标签事件里保存a的引用,var that =this这样。
2.用call或apply动态改变传入函数的this
ps:
你用a做变量,获取标签a的高度,有点怪,换个变量名吧
发自「贵邮」
可以可以
【 在 h452114240 (小深刻的秋鼠) 的大作中提到: 】
: 作为一个普通函数来调用this会指向window,
: 作为对象方法来调用this会指向对象,
: 你这个函数要是在a这个标签事件里直接获取高度,this是可以指向a,但是你用了函数调用的方式,便指向了window。
: ...................
虽然没有查到文档,但是你直接在 html 里写的 onclick 的话, this 应该就是 window 了.
你说的第二个例子还是这个原因啊 var a=$(this).offset().top. $(this)就是 window 了,window 的 offset 就是 undefined.
我觉得最好的改法还是不用HTML onclick, 而是在 js 里取元素用 on, 或者 click (假定你就用 jquery, 因为看到代码里你应该是用 jquery)
html 里写事件属性是标准中不推荐的做法
感谢解答,,我按你的方法试一试~
【 在 h452114240 的大作中提到: 】
: 作为一个普通函数来调用this会指向window,
: 作为对象方法来调用this会指向对象,
: 你这个函数要是在a这个标签事件里直接获取高度,this是可以指向a,但是你用了函数调用的方式,便指向了window。
: ...................
十分感谢~我去试一试~
【 在 AlstonLYG 的大作中提到: 】
: 虽然没有查到文档,但是你直接在 html 里写的 onclick 的话, this 应该就是 window 了.
: 你说的第二个例子还是这个原因啊 var a=$(this).offset().top. $(this)就是 window 了,window 的 offset 就是 undefined.
: 我觉得最好的改法还是不用HTML onclick, 而是在 js 里取元素用 on, 或者 click (假定你就用 jquery, 因为看到代码里你应该是用 jquery)
: ...................