2016-12-12 150 views
0

即时通讯真的是初学者进入JavaScript,所以我奋斗。我的问题是 - 我创建的对象与对象的specfic名构造,从数组创建变量

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”。

当我尝试用数组索引调用对象的值时,它显示无法解析。有人能告诉我什么是错的吗?它是因为它在功能fodd之外?我应该理解哪些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

没有任何东西被推入zaz。 – Lain

回答

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); 
    }; 
} 
+0

广告。斯里,是的,我把zaznaczone改成了zaz,但不是在所有地方 – jskorups