为什么控制台显示对象内容时,对象显示为未定义
Why is object appearing as not defined, when console shows object contents?
我想,我想要完成的事情很简单。我希望能够在文本框中输入我的名字,点击提交,并将信息打印到对象内的控制台。当我打开控制台时,它似乎可以工作。我可以输入不同的名字,它会被打印到控制台上。但是,如果我试图查找Person对象,就会得到一个错误,说它未定义。发生什么事情了?
https://jsfiddle.net/w0zwrqoa/HTML <p>First Name</p>
<input type="text" id="fname">
<p>Last Name</p>
<input type="text" id="lname">
<button id="button">Submit</button>
JS
var Person = function (firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
};
document.getElementById('button').onclick = function() {
var fn = document.getElementById('fname').value;
var ln = document.getElementById('lname').value;
function addPerson (person){
console.log(person);
};
var user = new Person (fn, ln);
addPerson(user);
};
变量user的作用域是onclick函数,它不存在于外部。您可以在此之前定义user,如下面的代码所示:
var Person = function (firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
};
var user;
document.getElementById('button').onclick = function () {
var fn = document.getElementById('fname').value;
var ln = document.getElementById('lname').value;
function addPerson(person) {
console.log(person);
};
user = new Person(fn, ln);
addPerson(user);
};
正如在注释中所说,在控制台中输入"Person"并不一定反映刚刚创建的"Person"。添加数组
People = [];
var Person = function...
,然后在add person函数中向数组中添加新的人,
People.push(person);
console.log(person);
现在允许你在控制台中输入"People",并看到你正在寻找的东西。
相关文章:
- javascript对象显示为null,但object.properties返回数据
- Angular2 - json 对象显示名称,但在列表中单击时获取 id
- 对象 对象显示在 td 中
- 通过 html 图像元素对象显示图像
- 跨 ajax 请求到服务器返回的 json 对象显示错误意外令牌:
- 将 ajax 请求的 JSON 对象显示在 HighCharts 中
- 使用日期对象显示带有UTC日期时间输入的本地时间
- 控制台日志事件对象显示的对象属性与其应有的属性不同
- js/jquery对象显示只是一个快速的闪光
- 警告Javascript数组对象显示为空
- 如何用json对象显示angularjs ng repeat
- 数组中的对象显示为[object object]
- 如何从JavaScript数组/对象显示图像?从第一个图像开始,然后点击到下一个
- 对象显示对象而不是按钮
- 为什么我的对象显示为&;[object object]&;
- Json对象显示值1
- Json对象显示在html中
- 如何在HTML中将JSON对象显示为下拉菜单的选项,对所有对象使用通用的JavaScript函数
- 为什么控制台显示对象内容时,对象显示为未定义
- 如何在JavaScript中将任何对象显示为字符串