2017-08-25 56 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