Как убрать undefind при использовании each?

есть такой список

<ul id="sortable" class="ui-sortable">
      <li class="ui-state-default wells ui-sortable-handle" data-id="57" data-cat="1" data-title="Для нее">
        Для нее
        <span class="glyphicon glyphicon-remove del"></span>
      </li>
      <li class="ui-state-default wells ui-sortable-handle" data-id="62" data-cat="1" data-title="Для дома">
        Для дома
        <span class="glyphicon glyphicon-remove del"></span>
      </li>
</ul>


$('#sortable').on('click','.wells .del',function(){
    $(this).parent('.wells').remove()
});


а вот таким образом информация о составляюших списка в виде json отправляется в input



$("#secure").click(function (e) {
            e.preventDefault();
            var addval;
            $( "#sortable li" ).each(function (i) {
                var id = $(this).data('id');
                var cat = $(this).data('cat');
                var title=$(this).data('title');
                var num=0;
                alert(title);
                if($('#frontendsetup-vaelye').val()==''){
                    var addval = '"menu'+i+'":{"title":"' + title + '","id":' + id + ',"cat":' + cat + '}';
                }else{
                    var addval = ',"menu'+i+'":{"title":"' + title + '","id":' + id + ',"cat":' + cat + '}';
                }
            });
            var valincat = $('#frontendsetup-vaelye').val();
            var newval = valincat+''+addval;
            $('#frontendsetup-vaelye').val('{'+newval+'}');
        });


но если я вначале удалю элемент а потом закину в инпут получу такой json

{
          {
           "menu0":{"title":"Для нее","id":57,"cat":1}
          }
        undefined
       }


подспудно я понимаю что undefined и лишними скобками это проблемы из за DOM но как от этой проблемы избавиться ума не приложу. подскажите пожалуйста.
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 1
@vshvydky
var addval = '"menu'+i+'":{"title":"' + title + '","id":' + id + ',"cat":' + cat + '}';

впервые вижу такой наркоманский вариант формирования json
наверное вы имели ввиду нечто подобное:
addval[`menu${i}`] = {title: title, id: id, cat: cat };


А вообще завязывайте с чудесами по ту сторону, используйте js объекты , а если нао их в json, есть как бы JSON.stringufy(jsObject)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы