我正在开发一个小项目,我需要使用表单字段数据创建对象。简而言之,我有一个构造函数,它从每个表单字段中检索值,如下所示:
var Task = function() {
this.title = document.getElementById("task-title").value;
this.date = document.getElementById("task-date").value;
this.option = document.getElementById("task-option").value;
}
我需要的是每次有人点击提交按钮时创建一个新的对象实例。到目前为止我所拥有的是:
var submitBtn = document.getElementById('#someID');
submitBtn.addEventListener('click', function(event) {
event.preventDefault();
var newTask = new Task();
});
这可以创建一个对象,但每次按下按钮时都会覆盖对象。每次按下按钮时,我都需要创建一个新对象实例。
这可能吗?如果没有,那么构造函数是否更可行?非常感谢你。
答案 0 :(得分:1)
那是因为你总是将值放在同一个var中,你需要用你的对象创建一个数组,这样你就不会丢失旧对象
var submitBtn = document.getElementById('#someID');
var newTask = [];
submitBtn.addEventListener('click', function(event) {
event.preventDefault();
newTask.push(new Task());
});
答案 1 :(得分:1)
您在enventlistener中定义了newTask变量,然后立即将新任务分配给它。你的代码正在做你告诉它要做的一切。即,创建一个新变量并为其分配一个新的任务实例。函数结束后,newTask被销毁,因为无处可执行,你的代码中没有其他地方可以到达它。
为什么不尝试这个:
var submitBtn = document.getElementById('#someID');
var myTasks = [];
submitBtn.addEventListener('click', function(event) {
event.preventDefault();
myTasks.push(new Task());
});