2017-08-25 54 views
2

對象,提供空值甚至給值

window.onload = function() { 
 

 
    var Employee = function(name, bd) { 
 
    this.name = name; 
 
    this.bd = bd; 
 
    this.age = function() { 
 
     2017 - this.bd; 
 
    } 
 
    } 
 

 
    var empName = document.getElementById("name").value; 
 
    var empBday = document.getElementById("bday").value; 
 

 
    var empList = new Employee(empName, empBday); 
 

 
    var Btn = document.getElementById('add').addEventListener('click', function() { 
 
    console.log(empList); 
 
    }); 
 
}
<input type="text" id="name" value=""></input> 
 
<input type="text" id="bday" value=""></input> 
 
<button id="add">Add</button>

那麼即使我輸入一些值,然後,我CONSOLE.LOG稱爲「emplist」,但我的目標只得到Employee {name: "", bd: "", age: ƒ}

+0

當窗口負載的輸入值都只是空字符串,那麼這就是你所得到的。你期望別的嗎? – adeneo

+0

您可以在window.onload上設置值。您必須根據輸入中的更改更新它們https://developer.mozilla.org/fi/docs/Web/Events/change 頁面加載時它們爲空。 – Rikusor

+1

this.age需要返回一些東西,是不是? – JohnPan

回答

5

創建按鈕被點擊後,方可對象:

var Employee = function(name, bd) { 
    this.name = name; 
    this.bd = bd; 
    this.age = function() { 
     2017 - this.bd; 
    } 
} 

window.onload = function() { 
    document.getElementById('add').addEventListener('click', function(){ 
     var empName = document.getElementById("name").value; 
     var empBday = document.getElementById("bday").value; 

     var empList = new Employee(empName, empBday); 
     console.log(empList); 
    }); 
} 
4

你將值分配給window onload中的對象。因此,空值分配,因爲你的投入要素在默認情況下具有空值

將其更改爲

window.onload = function() { 
 

 

 
var Btn = document.getElementById('add').addEventListener('click', function(){ 
 
    var Employee = function(name, bd){ 
 
    this.name = name; 
 
    this.bd = bd; 
 
    this.age = function(){ 
 
     2017 - this.bd; 
 
    } 
 
} 
 

 
var empName = document.getElementById("name").value; 
 
var empBday = document.getElementById("bday").value; 
 

 
var empList = new Employee(empName, empBday); 
 
console.log(empList); 
 
}); 
 
}
<html> 
 
    <head> 
 
     <title>Employee Details</title> 
 
     <script src="script.js"></script> 
 
    </head> 
 
    <body> 
 
     <input type="text" id="name" value=""></input> 
 
     <input type="text" id="bday" value=""></input> 
 
     <button id="add">Add</button> 
 
    </body> 
 
</html>

-1

您需要像這樣添加處理程序更改事件:

window.onchange = function() { 
 

 
var Employee = function(name, bd){ 
 
    this.name = name.value; 
 
    this.bd = bd.value; 
 
    this.age = function(){ 
 
     2017 - this.bd; 
 
    } 
 
} 
 

 
var empName = document.getElementById("name") 
 
var empBday = document.getElementById("bday") 
 

 
var empList = new Employee(empName, empBday); 
 

 
var Btn = document.getElementById('add').addEventListener('click', function(){ 
 
    console.log(empList); 
 
}); 
 
}
<html> 
 
    <head> 
 
     <title>Employee Details</title> 
 
     <script src="script.js"></script> 
 
    </head> 
 
    <body> 
 
     <input type="text" id="name"></input> 
 
     <input type="text" id="bday"></input> 
 
     <button id="add">Add</button> 
 
    </body> 
 
</html>

+0

'windows.onchange'方式太全球化了,並且會因爲很多原因觸發瀏覽器。最壞的情況是,你的例子中的點擊綁定增加了所有輸出的「更改」。如果只需點擊一個元素就可以得到值,然後將其本地化。總是嘗試使用最具體而不是最全局的選擇器。 – Nope