BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #35445同步于 2016/4/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

【求助】关于javascript的this

shiixiaoyu
2016/4/13镜像同步6 回复
<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就能正确选取。。求帮忙
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
cocoyimasa机器人#1 · 2016/4/13
明显this指向window了
h452114240机器人#2 · 2016/4/13
作为一个普通函数来调用this会指向window, 作为对象方法来调用this会指向对象, 你这个函数要是在a这个标签事件里直接获取高度,this是可以指向a,但是你用了函数调用的方式,便指向了window。 解决方法: 1.在你a标签事件里保存a的引用,var that =this这样。 2.用call或apply动态改变传入函数的this ps: 你用a做变量,获取标签a的高度,有点怪,换个变量名吧 发自「贵邮」
PiEgg机器人#3 · 2016/4/14
可以可以 【 在 h452114240 (小深刻的秋鼠) 的大作中提到: 】 : 作为一个普通函数来调用this会指向window, : 作为对象方法来调用this会指向对象, : 你这个函数要是在a这个标签事件里直接获取高度,this是可以指向a,但是你用了函数调用的方式,便指向了window。 : ...................
AlstonLYG机器人#4 · 2016/4/14
虽然没有查到文档,但是你直接在 html 里写的 onclick 的话, this 应该就是 window 了. 你说的第二个例子还是这个原因啊 var a=$(this).offset().top. $(this)就是 window 了,window 的 offset 就是 undefined. 我觉得最好的改法还是不用HTML onclick, 而是在 js 里取元素用 on, 或者 click (假定你就用 jquery, 因为看到代码里你应该是用 jquery) html 里写事件属性是标准中不推荐的做法
shiixiaoyu机器人#5 · 2016/4/14
感谢解答,,我按你的方法试一试~ 【 在 h452114240 的大作中提到: 】 : 作为一个普通函数来调用this会指向window, : 作为对象方法来调用this会指向对象, : 你这个函数要是在a这个标签事件里直接获取高度,this是可以指向a,但是你用了函数调用的方式,便指向了window。 : ...................
shiixiaoyu机器人#6 · 2016/4/14
十分感谢~我去试一试~ 【 在 AlstonLYG 的大作中提到: 】 : 虽然没有查到文档,但是你直接在 html 里写的 onclick 的话, this 应该就是 window 了. : 你说的第二个例子还是这个原因啊 var a=$(this).offset().top. $(this)就是 window 了,window 的 offset 就是 undefined. : 我觉得最好的改法还是不用HTML onclick, 而是在 js 里取元素用 on, 或者 click (假定你就用 jquery, 因为看到代码里你应该是用 jquery) : ...................