Javascript 无法使用';调用方法;这';同一类的另一个方法中的关键字
我试图在用户提交表单后传递警报。html是这样的Javascript 无法使用';调用方法;这';同一类的另一个方法中的关键字,javascript,jquery,Javascript,Jquery,我试图在用户提交表单后传递警报。html是这样的 <form id="profile" name="profile"> <label for="firstName">Male</label> <input type="text" name="firstname" id="firstName" maxlength="20" class="required" value=""/> <input type="submit" name="
<form id="profile" name="profile">
<label for="firstName">Male</label>
<input type="text" name="firstname" id="firstName" maxlength="20" class="required" value=""/>
<input type="submit" name="sumit" value="submit"/>
</form>
当我得到一个错误,说..this.test不是一个函数。。。
如果我只是在e.preventDefault()之后传递警报,但它不能调用,我就不能通过关键字“this”调用方法。这让我说我的范围不对。我缺少什么?在JavaScript中,this的值基于作用域。每次有
function(){}
,就有了一个新的作用域。在每个函数中,这个
将是不同的,它是根据调用该函数的方式设置的
在执行this.test()
,this
不是表单
对象,而是#profile
元素。您需要将这个值保存到一个变量中,以便在事件中使用它
Form.prototype.formValidate = function($form){
var self = this;
$form.on('submit', function(e){
e.preventDefault();
self.test();
});
};
在JavaScript中,this
的值基于作用域。每次有function(){}
,就有了一个新的作用域。在每个函数中,这个
将是不同的,它是根据调用该函数的方式设置的
在执行this.test()
,this
不是表单
对象,而是#profile
元素。您需要将这个值保存到一个变量中,以便在事件中使用它
Form.prototype.formValidate = function($form){
var self = this;
$form.on('submit', function(e){
e.preventDefault();
self.test();
});
};
对..我可以在$form.on()之外调用它,因为那时你在form
对象的函数中。一旦进入活动,您就处于一个新的上下文中,此
已更改。这就是为什么您需要将其保存为变量,然后在事件中访问该变量。对..我可以在$form之外调用它。on()@soum:没错,因为当时您在表单
对象的函数中。一旦进入活动,您就处于一个新的上下文中,此
已更改。这就是为什么需要将其保存为变量,然后在事件中访问该变量。