если оператор нарушает метод .push - PullRequest
0 голосов
/ 25 февраля 2012

Таким образом, я перебираю набор массивов JSON, а затем перебираю каждый отдельный массив.

Если я удаляю два оператора if, он будет проходить через оба набора данных и добавлять 'target' с помощьюоба набора данных, но, как и сейчас, он будет только добавлять элементы. Присоединяйтесь к каждому первому циклу.

Дело было сначала в цикле if, думая, что это будет иметь значение, но нет.

Странно то, что consoleOut (как console.log) печатает мои вещи, так что на самом делецикл по обоим массивам в наборе JSON.

    $.each(data, function(keys, vals)
    {

    var items = [];


     $.each(data[keys], function(key, val) 
     {

        var currString = JSON.stringify(val);
        switch (key)
        {
        case "ID":              
            consoleOut("ID: "+currString+" loaded");
        break;                                      

        case "parentIDs":

            consoleOut("parentIDs: "+currString);
        break;
        case "UID":
            consoleOut("UID: "+currString);
            UID = unquote(currString);
        break;
        case "title":
            consoleOut("Title: "+currString);
            items.push('<H1 class="' + key + '">' + unquote(currString) + '</H1>');
        break;
        case "img":
            consoleOut("IMG: "+currString);

            if ($(currString).val() !== '')
            {
            items.push('<IMG class="' + key + '" src='+currString+'></IMG>');               
            };
        break;
        case "text":
            consoleOut("TXT: "+currString);

            if ($(currString).val() !== '')
            {
            items.push('<P class="' + key + '">'+currString+'</P>');

            };
        break;
        }
      });
      consoleOut("---------");

      $('<DIV/>', {
        'id': UID,
        html: items.join('')
      }).appendTo(target);
    } 
) 

Мне интересно, как операторы if нарушают мое добавление к основному массиву 'items' ..

(Когда я не делаю 'Строковое значение val в начале будет зацикливаться, но это потому, что тогда операторы будут истинными, но перестанут работать, когда ложь. Так что, может быть, лучше изменить для этого оператор if, но я все еще озадачен тем, как.push перестает работать?)

Ответы [ 2 ]

1 голос
/ 25 февраля 2012
$(currString).val() 

Это говорит о том, что вы создаете элемент и смотрите на атрибут value этого элемента. Это то, что вы действительно хотите? Я не думаю, что изображение или текст имеет значение.

Я думаю, вы захотите использовать length или html ()

[EDIT] Глядя на свой объект, вы просто хотите проверить длину currString

if( currString && currString.length>0 ) {
0 голосов
/ 25 февраля 2012

Это не JSON, это массив.

[{"ID":"1",
  "parentIDs":null,
  "UID":"home",
  "title":"Home",
  "text":"<3 here",
  "img":"/favicon.ico",
  "url":"home",
  "cat_id":"1",
  "view_id":"",
  "css_id":null}‌​,
 {"ID":"4",
  "parentIDs":"home",
  "UID":"home_info",
  "title":"Info about Home",
  "text":"Info about Home",
  "img":"",
  "url":"",
  "cat_id":"",
  "view_id":"",
  "css_id":null}
]

Вы уверены, что ваш ввод не выглядит примерно так (т. Е. Является JSON)?

{ "data" : [{"ID":"1",
             "parentIDs":null,
             "UID":"home",
             "title":"Home",
             "text":"<3 here",
             "img":"/favicon.ico",
             "url":"home",
             "cat_id":"1",
             "view_id":"",
             "css_id":null}‌​,
            {"ID":"4",
             "parentIDs":"home",
             "UID":"home_info",
             "title":"Info about Home",
             "text":"Info about Home",
             "img":"",
             "url":"",
             "cat_id":"",
             "view_id":"",
             "css_id":null}
           ] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...