Ассоциативный массив из ячеек и строк таблицы
Здравствуйте форумчане! Я в js новичок и думаю что задача эта весьма проста и тривиальна, однако я не могу уже несколько дней ее решить сам и не нашел вразумительного ответа в интернете.
Надеюсь создаю тему в нужном разделе. Итак, существует таблица вида: <table id="table"> <tbody> <tr id="1"> <td class="option_1">blablabla</td> <td class="option_2">blablabla</td> <td class="option_3">blablabla</td> <td class="...">blablabla</td> <td class="option_n">blablabla</td> </tr> <tr id="2"> <td class="option_1">blablabla</td> <td class="option_2">blablabla</td> <td class="option_3">blablabla</td> <td class="...">blablabla</td> <td class="option_n">blablabla</td> </tr> <tr id="3"> <td class="option_1">blablabla</td> <td class="option_2">blablabla</td> <td class="option_3">blablabla</td> <td class="...">blablabla</td> <td class="option_n">blablabla</td> </tr> <tbody> </table> Названия классов td-шек в каждой конкретной tr-ке повторяются. Нужно сделать ассоциативный массив где пара ключ-значение будет соответственно нужная мне td-шка в нужной мне tr-ке, для удобства обращения к ячейкам таблицы в дальнейшем скрипте. Обращений будет много, следовательно каждый раз делать это через DOM очень громоздко и неудобно. Очень хотелось бы реализовать что то типа id[1][option_3], но пока мне удалось только создать при помощи each два массива из tr-ок и td-шек, а вот как их связать все равно не понимаю. P.S Если что обращаться нужно не к классам, а к значениям ячеек. То есть дергать данные из таблицы. Прикрепляю свой нубокод: var table = $('#table').children(); var moduls = table.children(); var modul = []; var option = []; moduls.each(function(){ ident = $(this); modul.push(ident); }); options = moduls.children(); options.each(function(){ classes = $(this); option.push(classes); }); |
Создавать надо объект - свойство это индекс строки, а значение массив ячеек, то есть
var tbl = {[0, 1, 2, 3, ...], [0, 1, 2, 3, ...]} или имена классов а не индексы ячеек. Вот только что-то сомнительно, чтобы в этом действительно была потребность. |
Spindog,
var table = $('#table'); var trs = $('tr', table); var option = []; trs.each(function(){ option.push($('td',this)); }); и всё |
Цитата:
Еще раз извиняюсь за нубские вопросы. Уже и так вижу что перемудрил. |
Spindog,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function() { var table = $('#table'); var trs = $('tr', table); var option = []; trs.each(function() { option.push($('td', this)); }); option[1].html(12345) //изменить содержимое всех ячеек 2 строки option[0].eq(2).html('0-0-0-0-0-0') //изменить содержимое третей ячейки 1 строки alert(option[2].eq(4).html()) //получить содержимое пятой ячейки 3 строки }); </script> </head> <body> <table id="table"> <tbody> <tr id="1"> <td class="option_1">blablabla</td> <td class="option_2">blablabla</td> <td class="option_3">blablabla</td> <td class="...">blablabla</td> <td class="option_n">blablabla</td> </tr> <tr id="2"> <td class="option_1">blablabla</td> <td class="option_2">blablabla</td> <td class="option_3">blablabla</td> <td class="...">blablabla</td> <td class="option_n">blablabla</td> </tr> <tr id="3"> <td class="option_1">blablabla</td> <td class="option_2">blablabla</td> <td class="option_3">blablabla</td> <td class="...">blablabla</td> <td class="option_n">555</td> </tr> </tbody> </table> </body> </html> |
Спасибо огромное! Я не знал про eq(), сидел голову ломал. Теперь буду знать.
|
Часовой пояс GMT +3, время: 05:53. |