Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.08.2015, 20:17
Новичок на форуме
Отправить личное сообщение для Spindog Посмотреть профиль Найти все сообщения от Spindog
 
Регистрация: 19.08.2015
Сообщений: 3

Ассоциативный массив из ячеек и строк таблицы
Здравствуйте форумчане! Я в 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);
		});

Последний раз редактировалось Spindog, 19.08.2015 в 20:22.
Ответить с цитированием
  #2 (permalink)  
Старый 19.08.2015, 20:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Создавать надо объект - свойство это индекс строки, а значение массив ячеек, то есть
var tbl = {[0, 1, 2, 3, ...], [0, 1, 2, 3, ...]}

или имена классов а не индексы ячеек. Вот только что-то сомнительно, чтобы в этом действительно была потребность.
Ответить с цитированием
  #3 (permalink)  
Старый 19.08.2015, 20:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,077

Spindog,
var table = $('#table');
var trs = $('tr', table);
var option = [];
trs.each(function(){
			option.push($('td',this));
		});

и всё
Ответить с цитированием
  #4 (permalink)  
Старый 19.08.2015, 21:14
Новичок на форуме
Отправить личное сообщение для Spindog Посмотреть профиль Найти все сообщения от Spindog
 
Регистрация: 19.08.2015
Сообщений: 3

Сообщение от рони Посмотреть сообщение
Spindog,
var table = $('#table');
var trs = $('tr', table);
var option = [];
trs.each(function(){
			option.push($('td',this));
		});

и всё
Это ассоциативный массив? А как мне тогда обращаться к значениям? Как понимаю скрипт делает мне выборку самих объектов. Я могу обращаться сразу ко всем ячейкам в определенной строке, не понимаю как обратиться к конкретной и выдернуть значение.
Еще раз извиняюсь за нубские вопросы. Уже и так вижу что перемудрил.

Последний раз редактировалось Spindog, 19.08.2015 в 21:57.
Ответить с цитированием
  #5 (permalink)  
Старый 19.08.2015, 22:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,077

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>
Ответить с цитированием
  #6 (permalink)  
Старый 19.08.2015, 22:18
Новичок на форуме
Отправить личное сообщение для Spindog Посмотреть профиль Найти все сообщения от Spindog
 
Регистрация: 19.08.2015
Сообщений: 3

Спасибо огромное! Я не знал про eq(), сидел голову ломал. Теперь буду знать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление строк в таблицу и скрытие таблицы. III Общие вопросы Javascript 39 20.11.2015 10:05
Динамическое удаление строк таблицы Tankist Events/DOM/Window 16 03.07.2013 16:42
IE 8: баг при динамическом display=none; у ячеек таблицы SegaMega Элементы интерфейса 0 21.09.2012 06:47
Перемещение строк таблицы в Firefox barcelona jQuery 17 23.02.2009 15:41
Автоматическая подсветка строк таблицы mihha Элементы интерфейса 5 01.02.2009 01:28