调用类函数没有按预期响应

时间:2017-08-22 05:59:35

标签: javascript class dom input undefined

我在调用变量valio时遇到问题,当我将文本输入到输入中并在调用它之后,控制台返回“现在已注册 未定义“。

我有这种类型的呼叫的经验,但从未发生过,所以有人可以解释为什么这不能像我预期的那样工作?

var name = document.getElementById("name");
var email = document.getElementById("email");
var comment = document.getElementById("comment");

class User{
 constructor(username,comment,email){
  this.username = username;
  this.comment = comment;
  this.email = email;
  }
  register(){
   console.log(this.username + this.comment + " is now registered");
  }
}

var valio = new User(name.value , comment.value, email.value);

       <input id="name" type="text" value=""><br>
       <input id="email" type="text" value=""><br>
       <input id="subject" type="text" value=""><br>
       <input id="comment" type="text" value=""><br>

3 个答案:

答案 0 :(得分:1)

将您的变量name更改为uname

 var uname = document.getElementById("name");
 var email = document.getElementById("email");
 var comment = document.getElementById("comment");

 class User{
  constructor(username,comment,email){
   this.username = username;
   this.comment = comment;
   this.email = email;
   }
   register(){
    console.log(this.username + this.comment + " is now registered");
   }
 }

 var valio = new User(uname.value , comment.value, email.value);

   <input id="name" type="text" value=""><br>
   <input id="email" type="text" value=""><br>
   <input id="subject" type="text" value=""><br>
   <input id="comment" type="text" value=""><br>

答案 1 :(得分:0)

name变量似乎与javascript中的关键字冲突。尝试将其重命名为其他内容。

e.g。

var nameInput = document.getElementById("name");

然后将nameInput.value传递给构造函数。

答案 2 :(得分:0)

您将名称输入字段的引用放在名为name的变量中。但是,name已被定义为string类型的全局变量:

https://developer.mozilla.org/en-US/docs/Web/API/Window/name

它可能无法被覆盖。

尝试更改变量名称:

var username = document.getElementById("name");

var valio = new User(username.value , comment.value, email.value);