Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是什么导致无法读取属性';防止违约';此表单验证程序类中未定义的?_Javascript_Es6 Class - Fatal编程技术网

Javascript 是什么导致无法读取属性';防止违约';此表单验证程序类中未定义的?

Javascript 是什么导致无法读取属性';防止违约';此表单验证程序类中未定义的?,javascript,es6-class,Javascript,Es6 Class,我正在使用JavaScript编写一个表单验证程序类: 类FormValidator{ 构造函数(){ this.formToValidate=document.querySelector(“表单”); this.submitButton=this.formToValidate.querySelector(“输入[type=submit]”); } validateForm(){ console.log('test'); } 提交表格(e){ e、 预防默认值(); 这是validateFor

我正在使用JavaScript编写一个表单验证程序类:

类FormValidator{
构造函数(){
this.formToValidate=document.querySelector(“表单”);
this.submitButton=this.formToValidate.querySelector(“输入[type=submit]”);
}
validateForm(){
console.log('test');
}
提交表格(e){
e、 预防默认值();
这是validateForm();
}
init(e){
this.formToValidate.addEventListener('submit',this.submitForm(e));
}
}
const formValidator=new formValidator();
formValidator.init()

更改

init(e){
this.formToValidate.addEventListener('submit',this.submitForm(e));
}

init(e){
this.formToValidate.addEventListener('submit',()=>this.submitForm(e));
}

您在init函数中有一个未定义的参数e。只需使用:

init() {
        this.formToValidate.addEventListener('submit', this.submitForm);
      }

('submit',this.submitForm(e))
不是在
this.submitForm
不返回函数时添加事件侦听器的方式。如果运行该代码段,则会得到原因。您正在调用
init
,但未提供
e
。因为没有要提供的
e
。因此,当您立即调用call
this.submitForm(e)
时,您将
e
传递为
未定义。1.从
init
中删除
e`。2.不要立即调用
this.submitForm
,而是使用
(e)=>this.submitForm(e)
作为回调。此外,您没有在
formValidator.init()中通过
e
@努尔你认为应该传递什么来让代码工作?@VLAZ,实现者知道,我不。。。