Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите с циклом! (https://javascript.ru/forum/jquery/72763-pomogite-s-ciklom.html)

AlexSergeev1990 24.02.2018 17:31

Помогите с циклом!
 
есть таблица в два столбца
<table>
<tr>
<td><input type="checkbox" value="23" checked/></td>
<td><input type="text" value=" " id="proba"/></td>
</tr>
<tr>
<td><input type="checkbox" value="45" checked/>,<input type="checkbox"  value="66" checked/>,<input type="checkbox" value="77" checked/></td>
<td><td><input type="text" value=" " id="proba"/></td></td>
</tr>
</table>

надо чтобы скрипт проходил циклом по tr и записывал данные в массив
ввиде:{
nomer_stroki:1,
valcheck:23,
valinp:значение поля инпута,

nomer_stroki:2,
valcheck:45,66,77,
valinp:значение поля инпута,
и тд...
}

я написал скрипт но он у меня выводит только по 1 значению
var  Myarray={};
                     var inval=[];
                  $('table tbody tr').each(function(i) {
                        $(this).find('input:checkbox:checked').each( function(j) {
                
                                inval[j]=$(this).val();                         
                                 
                  Myarray[i]={
                            "id":i,
                            "valcheck":inval[j],
                            
                            }
                        j++;
                        });              
                      i++;
                  }) ;


Можете подсказать где ошибка в циклах.
Почему он передает только последний элемент в тех строках где checkboxov БОЛЬШЕ 1. Я же поставил счетчик на этот случай.

Rozer 24.02.2018 17:36

Прости сам не знаю :(
Но делаю такие циклы:
if(var i=0; i<5; i++)

Rozer 24.02.2018 17:38

И кстате как задать на этом форуме вопрос

Aetae 24.02.2018 17:58

Вы каждую итерацию второго each(который проходится по вложенным значениям) перезаписываете целиком Myarray[i], чего вы хотите?
Надо примерно так:
var Myarray={};
$('table tbody tr').each(function(i) {
  Myarray[i]={
    "id": i,
    "valcheck": $(this).find('input:checked').map( function(j) {
      return $(this).val();                         
    }).get().join(',') ,
  }
});


Часовой пояс GMT +3, время: 13:57.