1

我正在从我的数据库中获取一个如下所示的 JSON 对象:

products = [
    {"ID":1, "CODE":"code1", "DESCRIPTION":"abcd", "PRICE":100},
    {"ID":2, "CODE":"code2", "DESCRIPTION":"efgh", "PRICE":100},
    {"ID":3, "CODE":"code3", "DESCRIPTION":"ijkl", "PRICE":100}
];

然后我有一个 select 元素,其中每个产品的选项都有 text = CODE 和 value = ID。现在,当用户在下拉列表中选择产品时,我想用所选产品的说明和价格填充一些文本框。是否有任何内置函数可以执行以下操作:

var myObject = products("ID" = selectedValue)

?

我想用

myObject.DESCRIPTION, myObject.PRICE

填写我的文本框。谢谢

4

2 回答 2

0

现代 javascript 引擎(IE9 及更高版本、node.js 和符合标准的浏览器)也支持数组的功能列表方法:mapreducefilter.

这是一个经典案例filter

var myObject = products.filter(function(x){return x.ID == selectedValue})[0];

对于较旧的 bo​​rwsers,您可以实现此 shim:

if (!Array.prototype.filter) {
    Array.prototype.filter = function(callback, myself) {
        if (!myself) myself = this;
        var result = [];
        for (var i=0;i<myself.length;i++) {
            if (callback(myself[i],i,myself)) result.push(myself[i]);
        }
        return result;
    }
}
于 2012-11-09T04:06:36.830 回答
0

您可以使用$.each实用程序功能:

$('select').change(function(){
   var id = this.value;
   $.each(products, function(i, myObject){
      if (myObject.ID === id) {
        $('textarea').val(myObject.DESCRIPTION);
        return false;
      }
   })
})
于 2012-11-09T03:12:18.090 回答