我对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]
。
任何人都可以解释原因,我怎样才能获得该元素。
答案 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”,那么首先“这将代表第一个函数,第二个”这将代表第二个函数。如果你想调用其他东西,那么你需要创建该函数/元素的对象,然后你可以调用它们。
您可以在这里找到更好的答案:
答案 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);