Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Добраться до ячеек таблицы через DOM (https://javascript.ru/forum/events/2600-dobratsya-do-yacheek-tablicy-cherez-dom.html)

twolf 21.01.2009 13:33

Добраться до ячеек таблицы через DOM
 

Есть вот такая табличка в html.
На Elem повешено событие, которое должно изменять значения в ячейках X в этой же строке. Строк может быть много.
Вопрос: как кроссбраузерно добраться до этих ячеек?

gcolor 21.01.2009 15:54

tablica=document.getElementById("asder");
qwe=tablica.getElementsByTagName("td")[3];<- МЕНЯЕШ ЦИФИРКИ :)
qwe.style.background='#d5e6f1';

twolf 21.01.2009 16:09

не получится.
Elem должен менять значения в своей(!) строке.

gcolor 21.01.2009 16:16

Тогда надо обратиться getElementsByTagName("tr") а потом уже getElementsByTagName("td"). Вроде так :)

gcolor 21.01.2009 16:24

function Go(asder)
{
table=asder;
xrow=table.getElementsByTagName("td");
for (j=0;j<xrow.length;j++)
   {
   тут делаем что нам нужно
типа так xrow[j].value=somedata
}
}

событие onclick=Go(this); у тебя в каждой строке таблицы
Вроде так.

twolf 21.01.2009 16:54

gcolor,
я очень ценю Вашу помощь, но всетаки это не подходит, т.к. в xrow будет массив из всех td таблицы. что и где изменять непонятно.
xrow[j].value=somedata - Вы имели ввиду xrow[j].innerHTML ?
И название темы говорит что мне надо по-другому.
Где же сторожилы :)

gcolor 21.01.2009 16:59

Но почему же все?
У вас же так в таблице:
<tr onclick=Go(this)>
Значить ссылаемся только на ту строку на которую нажали.
Дальше перебираем <td> которые относятся только к нашей строке.

Я только учусь :)

twolf 21.01.2009 17:04

нет. у меня на Elem событие вешается из скрипта. На строке нет никакого события.
Помоему, Вы думаете что мне надо подсветить строку таблицы. Нет, я хочу по клику на Elem изменить значения X в определенных ячейках текущей строки.

Kolyaj 21.01.2009 17:07

Цитата:

Сообщение от twolf
Где же сторожилы

Наблюдают :)

Octane 21.01.2009 17:25

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
window.onload= function() {
	document.getElementById('table').onclick = function(event) {
		event = event || window.event;
		var target = event.target || event.srcElement;
		if(target.tagName == 'INPUT') {
			var cells = target.parentNode.parentNode.cells;
			cells[1].innerHTML = cells[3].innerHTML = 'Y';
		}
	};
};
</script>
</head>
<body>
	<table id="table">
		<tbody>
			<tr>
				<td>&nbsp;</td>
				<td>X</td>
				<td>&nbsp;</td>
				<td>X</td>
				<td><input type="button" value="Edit" /></td>
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td>X</td>
				<td>&nbsp;</td>
				<td>X</td>
				<td><input type="button" value="Edit" /></td>
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td>X</td>
				<td>&nbsp;</td>
				<td>X</td>
				<td><input type="button" value="Edit" /></td>
			</tr>
		</tbody>
	</table>
</body>
</html>


DOM: Работаем со строками и ячейками таблицы


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