任何人都可以向我解释这个关键字的行为

时间:2014-02-28 09:24:33

标签: javascript jquery element this

我对this关键字的行为感到有点困惑。单击按钮时我试图调用一个函数。但正如我所知,当我调用函数on click of an element the this should refer to the element时它应该在我们控制时返回该元素。但就我而言,它正在返回[object HTMLInputElement]

代码:

var self=this,submitAns=$('#submitAns');
submitAns.on('click',self.verifyAns);

    verifyAns:function(e){
        console.log('from verifyAns : '+this);
         e.preventDefault();
    }

控制台的结果是[object HTMLInputElement]

任何人都可以解释原因,我怎样才能获得该元素。

5 个答案:

答案 0 :(得分:2)

this确实引用了元素。您可以使用{ - 1}} -

对该元素执行某些操作
this

答案 1 :(得分:0)

创建函数时,会创建一个名为this的关键字(幕后), 链接到函数运行的对象。换句话说,就是这样 可用于其功能范围,但是参考其中的对象 功能是一种属性或方法。

<!DOCTYPE html><html lang="en"><body><script>
var cody = {
living: true,
age: 23,
gender: 'male',
getGender: function () { return cody.gender; }
};
console.log(cody.getGender()); // Logs 'male'.
</script></body></html>

注意getGender函数的内部,我们正在访问gender属性 在cody对象本身上使用点表示法(例如,cody.gender)。这可以改写 使用this访问cody对象,因为this指向cody对象。

您的正确代码将是这样的。

var submitAns=$('#submitAns');
submitAns.on('click', function verifyAns(e){
        console.log('from verifyAns : '+ $(this));
         e.preventDefault();
    });

答案 2 :(得分:0)

实际上“this”指的是使用它的函数,它不代表元素,所以如果你有两个函数,并且两者都使用“this”,那么首先“这将代表第一个函数,第二个”这将代表第二个函数。如果你想调用其他东西,那么你需要创建该函数/元素的对象,然后你可以调用它们。

您可以在这里找到更好的答案:

Understanding the Basic Concept of "this" Keyword

答案 3 :(得分:0)

这是一个HTML对象,您可以stringify显示当前输出:

console.log('from verifyAns : '+JSON.stringify(this));

或者直接将其输出到控制台,然后您就可以看到整个HTML代码块:

console.log(this);

答案 4 :(得分:0)

如果您想将输入元素作为对象,请使用此

console.log(this);

而不是

console.log('from verifyAns : '+this);