将对象添加到数组onclick Javascript

将对象添加到数组onclick Javascript,javascript,Javascript,var householdData=[]; 功能户主成员(年龄、关系、吸烟者){ 这个。年龄=年龄; this.rel=rel; 这个。吸烟者=吸烟者; } addBtn.addEventListener(“单击”,addHouseholdMember); 函数addHouseholdMember(){ var selectedAge=“EaxampleData; var selectedRel=“ExampleData”; var selectedText=“ExampleData”; var

var householdData=[];
功能户主成员(年龄、关系、吸烟者){
这个。年龄=年龄;
this.rel=rel;
这个。吸烟者=吸烟者;
}
addBtn.addEventListener(“单击”,addHouseholdMember);
函数addHouseholdMember(){
var selectedAge=“EaxampleData;
var selectedRel=“ExampleData”;
var selectedText=“ExampleData”;
var selectedSmoker=“ExampleData”;
var currentHouseholdMember=新的householdMember(selectedAge、selectedText、selectedSmoker);
console.log(currentHouseholdMember);
返回householdData.push(当前householdMember);
};
修复所选的页面数据(结束引号)并返回新值,而不是推送的结果

function addHouseholdMember() {

  var selectedAge = "EaxampleData";
  var selectedRel = "ExampleData";
  var selectedText = "ExampleData";
  var selectedSmoker = "ExampleData";

  var currentHouseholdMember = new householdMember(selectedAge, selectedText, selectedSmoker);
  console.log(currentHouseholdMember);
  householdData.push(currentHouseholdMember);
  return currentHouseholdMember;

};

这里没有终止字符串常量, var selectedAge=“EaxampleData

插入结束括号,然后重试

var householdData=[];
var addBtn=document.querySelector('.addBtn');
功能户主成员(年龄、关系、吸烟者){
这个。年龄=年龄;
this.rel=rel;
这个。吸烟者=吸烟者;
}
addBtn.addEventListener(“单击”,addHouseholdMember);
函数addHouseholdMember(){
var selectedAge=“EaxampleData”;
var selectedRel=“ExampleData”;
var selectedText=“ExampleData”;
var selectedSmoker=“ExampleData”;
var currentHouseholdMember=新的householdMember(selectedAge、selectedText、selectedSmoker);
householdData.push(当前householdMember);
console.log(住户数据);
};

添加
通过创建另一个函数,将推送数据的责任转移到
家庭成员

您也可以返回该值,而不是登录该值

var addBtn=document.getElementById('btn'))
var householdData=[];
功能户主成员(年龄、关系、吸烟者){
这个。年龄=年龄;
this.rel=rel;
这个。吸烟者=吸烟者;
this.addVal=函数(){
家庭数据推送({
年龄:这个年龄,
雷尔:这个,雷尔,
吸烟者:这个,吸烟者
})
返回住户数据;
}
}
addBtn.addEventListener(“单击”,addHouseholdMember);
函数addHouseholdMember(){
var selectedAge=“EaxampleData”;
var selectedRel=“ExampleData”;
var selectedText=“ExampleData”;
var selectedSmoker=“ExampleData”;
var currentHouseholdMember=新的householdMember(selectedAge、selectedText、selectedSmoker);
console.log(currentHouseholdMember.addVal())
};

单击
代码的问题是返回JavaScript
推送
函数的返回值。这将返回数组的长度。

您需要做的是首先将对象添加到数组中,然后返回数组

householdData.push(currentHouseholdMember);
return householdData;
我试图将我正在创建的对象推送到数组中

它正在被推送,刚刚确认你的代码工作

我可以在单击按钮时对对象进行console.log操作,但不能 返回单击函数中的任何内容

您正在将新创建的对象传递到console日志,要查看更新的数组,请尝试在console.log中打印更新的数组,如下面的工作示例所示:

var householdData=[];
功能户主成员(年龄、关系、吸烟者){
这个。年龄=年龄;
this.rel=rel;
这个。吸烟者=吸烟者;
}
document.getElementById(“按钮”).addEventListener(“单击”,addHouseholdMember);
函数addHouseholdMember(){
var selectedAge=“28”;
var selectedRel=“25”;
var selectedText=“22”;
var selectedSmoker=“21”;
var currentHouseholdMember=新的householdMember(selectedAge、selectedText、selectedSmoker);
console.log(currentHouseholdMember);
console.log(住户数据);
返回householdData.push(当前householdMember);
};

JS-Bin
点击

侦听器的返回值无关紧要(在这种情况下),您究竟想用该
返回值做什么?还要注意,
push
返回数组的新长度。为什么要返回全局变量?不能将对象“推”到数组中。只能在数组中创建对该对象的引用。当函数被术语化时,该范围内定义的所有变量和对象也将被销毁。因此,您将得到一个对已删除对象的引用。我试图返回它,因为我想通过单击按钮几次来建立一个对象数组,并让它每次向数组中添加一个新对象。@JohnBull您不需要返回全局变量,因为您可以从任何地方直接访问它们。例如:函数调用后或事件触发时立即响应。感谢您抽出时间响应。我使用了OOP,但它只是示例数据,在我使用的实际代码中,我从表单中提取数据,所有这些都在工作。但我能看到打字错误造成的混乱。学习时刻。