今天写到一句html代码
html:
<a href="javascript:void(0)" onClick='deleteRow(this)' title="删除> Content </a>
JS:
一:
function deleteRow(a){
alert($(a).html());
}
用这种方法可以成功地看到链接的内容
二:
function deleteRow(a){
alert($(this).html());
}
这种方法无法获取链接内容,得到是undefine。我一直习惯用this获取,之前写过其他的也完好运行,就是这个一直无法获取,换成第一种写法就可以了。想不懂啊,求解释(如果是一时浏览器或者eclipse神经了那就认了,主要是想弄懂这两种方法是不是真的有所区别)
“一”中,a是deleteRow函数传递过来过来的this,这个this代表a标签本身。如果用html能取到a的内容。
“二”中,用的是this,这个this表示函数的执行作用域,在你的这段代码里,this=window。所以对window进行包装,然后取html就取不到值。
哦,提到作用域我就有点懂了。我一直以为触发事件时,一定会把对象传进去,就像event一样,就算不传,方法中一样可以获取到。看来理解错了。谢谢啦
@choseee: :)
哦,提到作用域我就有点懂了。我一直以为触发事件时,一定会把对象传进去,就像event一样,就算不传,方法中一样可以获取到。看来理解错了。谢谢啦
测试了一下,第二种方法this.close()可以关闭窗口,确实是window
你可以在alert($(this).html());前面加上:console.log(this);
用调试模式看看this是什么东东就知道了
至于原因嘛,就是楼上所说