Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Собрать массив из таблицы (https://javascript.ru/forum/jquery/62715-sobrat-massiv-iz-tablicy.html)

V2oD2o 25.04.2016 16:29

Собрать массив из таблицы
 
Всем привет, конец рабочего дня - затуп начался.

есть таблица

id data text
0 123 comment

соответственно берем все строки:
$('#'+id+' tr').each(function(index, value) {}


Перебираем все td (их кол-во динамическое) внутри input с name (id,data,text)

arrayData=[];
$('#'+id+' tr').each(function(index, value) {
  $(this).children('td').children('input').each (function() {
    вот тут надо собрать в ассоциативный массив, как ?
  });
});
}


т.е. надо собрать - name input'a это имя переменной value input'a это значение переменной...

:-E

V2oD2o 25.04.2016 16:31

т.е. на выходе надо что то вроде:
array {
id=>0,
data=>123,
text=>comment
}

соответственно с учетом того что строк много, т.е.:
array {
[0]=>array {
id=>0,
data=>123,
text=>comment
}
[1]=>array{
id=>1,
data=>456,
text=>comment2
}
}

V2oD2o 25.04.2016 16:35

для примера, возьмем некий мусор:

<table style="width:100%;font-size:12px;" cellspacing="0" cellpadding="3" id="tableFields_datalist_id">
<tbody>
<tr class="selectable" style="">
	<td width="30"><input style="width:30px;" type="text" disabled="" value="0" name="id"></td>
	<td><input style="width:100%;" type="text" value="Alerana" name="data"></td>
	<td><input type="text" name="text" style="width:100%;"></td>
</tr><tr class="selectable" style="">
	<td width="30"><input style="width:30px;" type="text" disabled="" value="1" name="id"></td>
	<td><input style="width:100%;" type="text" value="Redken" name="data"></td>
	<td><input type="text" name="text" style="width:100%;"></td>
</tr><tr class="selectable" style="">
	<td width="30"><input style="width:30px;" type="text" disabled="" value="2" name="id"></td>
	<td><input style="width:100%;" type="text" value="Matrix" name="data"></td>
	<td><input type="text" name="text" style="width:100%;"></td>
</tr><tr class="selectable" style="">
	<td width="30"><input style="width:30px;" type="text" disabled="" value="3" name="id"></td>
	<td><input style="width:100%;" type="text" value="Loreal" name="data"></td>
	<td><input type="text" name="text" style="width:100%;"></td>
</tr>
</tbody></table>


С массивами в JS у меня туговато, но требуют чтоб все через ajax сохранялось на лету, по другому как передать - хз, только если массивом через POST

laimas 25.04.2016 16:53

Цитата:

Сообщение от V2oD2o
вот тут надо собрать в ассоциативный массив, как ?

А поместить таблицу в форму и просто ее сериализовать, что нельзя?

рони 25.04.2016 17:04

V2oD2o,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">

 </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

</script>
  <script>
 $(function(){
var id = 'tableFields_datalist_id',
arrayData= $.map($('#'+id+' tr'), function(el,i) {
var inp = $('input', el);

return ['id','data','text'].reduce( function(obj, key, indx) {
   obj[key] = inp[indx].value;
   return obj
},{})

});
$('p').text(JSON.stringify(arrayData))

   })
  </script>
</head>

<body>
<p></p>
<table style="width:100%;font-size:12px;" cellspacing="0" cellpadding="3" id="tableFields_datalist_id">
<tbody>
<tr class="selectable" style="">
	<td width="30"><input style="width:30px;" type="text" disabled="" value="0" name="id"></td>
	<td><input style="width:100%;" type="text" value="Alerana" name="data"></td>
	<td><input type="text" name="text" style="width:100%;"></td>
</tr><tr class="selectable" style="">
	<td width="30"><input style="width:30px;" type="text" disabled="" value="1" name="id"></td>
	<td><input style="width:100%;" type="text" value="Redken" name="data"></td>
	<td><input type="text" name="text" style="width:100%;"></td>
</tr><tr class="selectable" style="">
	<td width="30"><input style="width:30px;" type="text" disabled="" value="2" name="id"></td>
	<td><input style="width:100%;" type="text" value="Matrix" name="data"></td>
	<td><input type="text" name="text" style="width:100%;"></td>
</tr><tr class="selectable" style="">
	<td width="30"><input style="width:30px;" type="text" disabled="" value="3" name="id"></td>
	<td><input style="width:100%;" type="text" value="Loreal" name="data"></td>
	<td><input type="text" name="text" style="width:100%;"></td>
</tr>
</tbody></table>


</body>
</html>


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