2015-07-20 119 views
0

我想完成的工作很簡單。我希望能夠在文本框中輸入我的名字,點擊提交,並將信息打印到對象內的控制檯。當我調出控制檯時,它似乎工作。我可以鍵入不同的名稱,並將其打印到控制檯中。但是,如果我嘗試查找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); 

}; 
+1

你是什麼意思,「查找人」? – tymeJV

+0

你能提供一個JSFiddle嗎? – Dodekeract

+0

這也與大寫P查找人 – vinayakj

回答

0

可變用戶的作用域的onclick功能和它不存在外部。你可以之前定義用戶如下面的代碼:

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

}; 
0

正如在評論中說,鍵入「人」到控制檯不一定反映剛剛創建的「人」。添加一個陣列,

People = []; 
var Person = function... 

,然後加入新的人在你加人功能的陣列,

People.push(person); 
console.log(person); 

讓你現在在控制檯中輸入「人」和看到的東西你」重新尋找。