函数中this关键字的使用

我先用for循环给每个标签上了一个onclick事件,然后this关键字把该对象传递到函数中,然后修改对象的属性,请问该怎么做呢?以下是我的代码部分,不知道this关键字应该用在年哪。。。

var tag = document.getElementsByName('tag');
for (var i = 0; i < tag.length; i++) {
tag[i].onclick=fun(this); //this加在这里?
}
function fun(obj){
console.log(obj.vaule);
//obj.value=123;
}

阅读 3.3k
5 个回答

在for 里面的this是指的全局window对象吧?不知道楼主是想说修改DOM的属性?

var page = document.getElementsByName('tag');
for (var i = 0; i < tag.length; i++) {
    tag[i].onclick=fun; //this加在这里?
}
function fun(){
    console.log(this.vaule);

}

我只想问下tag.length是什么鬼,不是page.length吗?

var page = document.getElementsByName('tag');
for (var i = 0; i < tag.length; i++) {
tag[i].onclick=fun;
}
function fun(){
console.log(this.vaule);
}

this就是指你现在发起操作的主观对象,就像你通过tagname找到的对象,然后给对象绑定click事件,那么这时的this就是这个对象,因为是这个对象的点击,这个事件源就是这个this,所以通常在事件中的this和e.target或者evet.target是指的同一个对象。你好像认为this要放在function()括号中,其实你放在同一个作用域就行,不是非要放在函数中的参数上!

var tag= document.getElementsByName('tag');
for (var i = 0; i < tag.length; i++) {
    tag[i].onclick=fun('newVal');
}
function fun(val,hide){
    console.log(this);    // 这里this就是 tag[i];
    this.value = val;    // 修改tag[i]的value值;
    this.style.display = hide || 'block'    // 修改style的值(是否隐藏)
}

/* this指的都是被点击的dom元素 */
推荐问题