1

我对 jQuery 很陌生,我不明白为什么这个循环不显示对象属性。

如果你能帮助我,我将不胜感激。

var shop_array = ["title","price","img","text"];
var submit = $(".add").find(":submit");
submit.on("click",function(e){
    var elements = $(".add").children(':input');
    for(var i=0;i<elements.length;i++){
        if($(elements[i]).val()!==""){
            var object = '\"'+shop_array[i]+'\"';
            console.log(shopcart.shop_values[object])//dosen't display shop_value;
            console.log(object);
        }
    }
});
var shopcart= {
    shop_values :{
        "title":"a",
        "price":"b",
        "img":"img",
        "text":"text"
    },
    add: function(){

    }
}
4

1 回答 1

0

您的问题是"您放置了要用于访问对象属性的变量,它们不应该存在,因为它们不在属性名称中

var object = '\"'+shop_array[i]+'\"';
console.log(shopcart.shop_values[object])//dosen't display shop_value;

应该只是

console.log(shopcart.shop_values[shop_array[i]])//dosen't display shop_value;

为了使您当前的代码正常工作,shopcart需要将其定义为

var shopcart= {
    shop_values :{
        "\"title\"":"a",
        "\"price\"":"b",
        "\"img\"":"img",
        "\"text\"":"text"
    },
    add: function(){

    }
}

这看起来很糟糕。

于 2013-08-10T19:02:38.867 回答