从数组创建变量

时间:2016-12-12 21:52:32

标签: javascript html arrays input

我非常初学javascript,所以我很难挣扎。我的问题是 - 我使用带有特定对象名称的构造函数创建了对象,

function Food (name, Cal, price, Fat, Carb, Protein, Sugar) {
    this.name = name;
    this.Cal = Cal;
    this.price = price;
    this.Fat = Fat;
    this.Carb = Carb;
    this.Protein = Protein;
    this.Sugar = Sugar;
}


//bul
var bulPs = new Food("Bul"+" "+"Psz",120,3.50,36,80,45,78);
var bulSz = new Food("Bul"+" "+"Sez",140,2.90,34,75,33,68);
var bulBr = new Food("Bul"+" "+"bric",136,2.89,39,67,41,75);
var bulMa = new Food("Bul"+" "+"Man",157,3.20,42,56,36,78);

我有checkboxex,当我点击它们时,我推送所选项目(他们的id到数组)。 输入的ID与对象相同

例如var bulMa和此项目的ID是" bulMa"。

当我尝试使用数组索引调用对象的值时,它显示为未加密的。谁能告诉我什么是错的?它因为它的功能之外的东西?我应该理解JS核心的哪个部分来处理这些问题。谢谢

var zaz = [];
var inputs = document.getElementsByTagName('input');

for (var i=0; i< inputs.length; i++)
{
    inputs[i].onfocus = function() {
        zaznaczone.push(this.id);
        console.log(zaz);
        console.log(zaz[0].name);
    };
}

1 个答案:

答案 0 :(得分:1)

您的数组名为zaz,但您正在推进zaznaczone

zaz[0].name也将是未定义的; zaz[0]是元素的Id,因此是对象的name

var zaz = [];
var inputs = document.getElementsByTagName('input');

for (var i = 0; i < inputs.length; i++) {
    inputs[i].onfocus = function() {
        zaz.push(this.id);
        console.dir(zaz);
    };
}