Собрать массив из таблицы
Всем привет, конец рабочего дня - затуп начался.
есть таблица 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 |
т.е. на выходе надо что то вроде:
array { id=>0, data=>123, text=>comment } соответственно с учетом того что строк много, т.е.: array { [0]=>array { id=>0, data=>123, text=>comment } [1]=>array{ id=>1, data=>456, text=>comment2 } } |
для примера, возьмем некий мусор:
<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 |
Цитата:
|
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. |