отображать количество элементов в месяц, используя JSON jquery each () оператор IF (для цикла?) - PullRequest
0 голосов
/ 01 октября 2011

У меня есть JSON-объект данных, содержащий элементы и их продажи, перечисленные по месяцам. Я хотел бы перечислить продажи предметов / месяц внутри DIV вместе с другой информацией о каждом предмете.

Вот мой объект JSON:

var my_object= [{"item_id":"11","month":"February","sales":"7"}, {"item_id":"4","month":"February","sales":"2"},{"item_id":"11","month":"March","sales":"1"},{"item_id":"4","month":"March","sales":"2"}]

вот как бы я хотел, чтобы последний HTML-код выглядел:

<ul><li><button value="4">item_id_4</button><div>where the item_4 sales/month (i.e., 2,2) should go</div></li>
<li><button value="11">item_id_11</button><div>where the item_11 sales/month (i.e, 7,1) should go</div></li></ul>

наконец, вот моя еще не правильная попытка jquery / javascript для отображения количества элементов в месяц.

$(function(){   
$('button').each(function(){

var my_object = [{"item_id":"11","month":"February","sales":"7"},  {"item_id":"4","month":"February","sales":"2"},{"item_id":"11","month":"March","sales":"1"},{"item_id":"4","month":"March","sales":"2"}];

var button_value=$(this).val();

 $.each(my_object, function(i,item){

  if(item.item_id==button_value){       
    $('div').append(item.sales);
        } 

    });
}); 
});

В этом сценарии продажи для обоих товаров отображаются в КАЖДОМ элементе div, то есть в 2,2,7,1, вместо того, чтобы просто отображать 2,2 и 7,1 в их соответствующих элементах div_id_4 и item_id_11 отдельно. Из-за этого создается впечатление, что оператор if делает по крайней мере что-то правильно в том смысле, что продажи товара «my_object» перечислены в порядке значения кнопки, а не так, как в заказе «my_object».

Я не уверен, связана ли проблема с функциями each (), оператором IF или чем-то еще, не упомянутым здесь. Любая помощь в исправлении этого скрипта будет принята с благодарностью!

Ответы [ 2 ]

1 голос
/ 01 октября 2011

Ваш скрипт работает нормально, за исключением строки добавления, в которой вы указываете jQuery выбрать все элементы div на странице и добавить к ним ваши показатели продаж. Очевидно, это не совсем то, что вы хотели. :)

Используя вашу текущую структуру HTML, изменение этой строки для выбора следующего div, кажется, работает. (Я также сохранил текущую кнопку в $ this.)

$this.next("div").append(item.sales);

Код здесь http://jsfiddle.net/meloncholy/ZhrZU/

0 голосов
/ 01 октября 2011

Попробуйте следующее

$(function(){   

    var my_object = [{"item_id":"11","month":"February","sales":"7"},  {"item_id":"4","month":"February","sales":"2"},{"item_id":"11","month":"March","sales":"1"},{"item_id":"4","month":"March","sales":"2"}];

    for (var i in my_object) {
        var cur = my_object[i];
        $('button[value=' + cur.item_id + ']').each(function() {
            var msg = 'Sales Month: ' + cur.month + ' Number: ' + cur.sales;
            $(this).parent().append('<div>' + msg + '</div>');
        });
    }
});

Я не совсем уверен, что вы хотели, чтобы был начальный HTML, но я предположил следующее

<ul><li><button value="4"></button></li>
<li><button value="11"></button></li></ul>

Fiddle: http://jsfiddle.net/HdgmN/

...