Навигация в DOM
Скажите пожалуйста, как через DOM перейти к предыдущей строчке в таблице? alert(клетка.parentNode.previousSibling.tagN ame) не работает, хотя alert(клетка.parentNode.tagName) выводит положенное TR
|
Всё, я разобрался, между строчками таблицы есть текстовое поле, рабочий вариант клетка.parentNode.previousSiblin g.previousSibling.tagName
|
c previousSibling могут быть проблемы из за текстовых узлов пример ниже
<!DOCTYPE HTML>
<html>
<head> </head>
<body>
<table><tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr></table>
<script>
var table = document.body.children[0];
alert(table.rows[0].cells[0].innerHTML )// можно использовать cells && rows
console.log(table.rows[0].cells[0].nextSibling)// текстовый узел
console.log(table.rows[0].cells[0].nextSibling.nextSibling)// следущий td
console.log(table.rows[0].cells[0].nextElementSibling)// следущий td (поддержка ие9+)
</script>
</body>
</html>
|
Цитата:
Object.defineProperty( Element.prototype, "nextElementSibling", {
get: function() {
return this.nextSibling ?
this.nextSibling.nodeType === 1 ? this.nextSibling :
this.nextSibling.nextSibling : null;
}
});
и previousElementSibling:
Object.defineProperty( Element.prototype, "previousElementSibling", {
get: function() {
return this.previousSibling ?
this.previousSibling.nodeType === 1 ? this.previousSibling :
this.previousSibling.previousSibling : null;
}
});
А вот с ИЕ7 и ниже, уже проблемнее... там надо через HTC добавлять |
Цитата:
|
| Часовой пояс GMT +3, время: 13:03. |