我在调用变量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>
答案 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);