【问题标题】:Calling class function not responding as expected调用类函数未按预期响应
【发布时间】:2017-08-22 05:59:34
【问题描述】:

我在调用变量 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>

【问题讨论】:

  • name 会不会像 document.querySelector('#name') 一样存储一些东西?
  • 您能说明一下您的期望吗?在标题中您说的是“调用类函数”,但在问题的主体中您说的是“调用变量”。你在打电话,你希望得到什么?
  • 不,只有上面的变量

标签: javascript class dom input undefined


【解决方案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>

【讨论】:

  • 也许是我将文本放入输入的方式,因为当我将一些文本放入值代码中时,它会打印出来但是当我在浏览器输入的空白​​处输入它时给我这种错误,对不起我可怕的英语不是我的母语..
【解决方案2】:

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

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);

【讨论】:

  • 你好,我创建了一个函数 function wut(){ console.log(uname.value);并且它打印出来但是当我在一个变量中调用它时它给了我未定义的。
【解决方案3】:

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

例如

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

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

【讨论】:

    猜你喜欢
    • 2022-08-19
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    相关资源
    最近更新 更多