powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / nextSibling не работает c TR в IE11
10 сообщений из 10, страница 1 из 1
nextSibling не работает c TR в IE11
    #38614482
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Раньше в IE6 применялось свойство nextSibling, которое теперь в IE11 почему-то не работает. Прошу помощи, в скриптах нуб.

Применялся он для перехода к следующему ряду таблицы, в котором разворачивалась подчиненная таблица.
При клике на иконке подчиненная таблица показывается или скрывается.
Это обеспечивалось классом "op" (opened) тега table. При смене класса на "cl" он скрывался через { display: none; }.
Вот HTML, во втором TR есть иконка, по которой надо перейти к 3-му TR, найти в нем TABLE и поменять "op" на "cl".

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
<table border=0>
		<tr>
			<td class="ltnone"  width=20/>
			<th >№ пп</th>
			<th >По типам</th>			
		</tr>
		
		<tr class="the_src_tr">
			<td class="ltnone"><img  src="..\..\tableOp.ico" class="op" alt="Развертка" onclick="openOrCloseSubtable()"/> </td>
			<td align=right> <font color=dimgray>1</font> </td>
			<td class="leftbold" nowrap> <font color=mediumblue> Тип 1 </font> </td>			
		</tr>		
		<tr> <!--class="i_am_the_next_needed_as_sibling"-->
			<td colspan=8 class="nb">				
				<table border=0 class="op"> 
					<tr> 
						<td class="ltnonesub"/>
						<th align=right class="subtable">№ пп</th>
						<th class="subtable">Наименование</th>
						<th 
					</tr> 					
					<tr>
						<td />
						<td>1 </td>
						<td>наименование 1 тип 1 </td>
					</tr>
				</table>
			</td>
		<tr>
<table>					



Для перехода от IMG к TABLE использовалось и работало в IE6 такое выражение:

Код: javascript
1.
var ch=window.event.srcElement.parentNode.parentNode.nextSibling.firstChild.firstChild;



В IE11 оно не работает. Проанализировал его с помощью алертов:

Код: javascript
1.
2.
3.
4.
5.
var ch=window.event.srcElement.parentNode.parentNode;
		alert(ch.tagName + ", class: " + ch.className)
		ch = ch.nextSibling;
		alert("next_sibling: " + ch.tagName + ", class: " + ch.className)
		ch = ch.firstChild.firstChild;



первый алерт выдает "TR, class the_src_tr", второй выдает: "next_sibling: undefined, class: undefined".

Как видно, nextSibling почему-то не работает с TR. (в других отчетах с другими тегами работает)

Как в этой ситуации правильно перейти от IMG к TABLE из третьего TR?
...
Рейтинг: 0 / 0
nextSibling не работает c TR в IE11
    #38614502
ВадимСА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
teo609,

Замени на nextElementSibling и проверь на то чтобы это было то что тебе надо (текст, тег, табуляция…).
...
Рейтинг: 0 / 0
nextSibling не работает c TR в IE11
    #38614511
ВадимСА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВадимСА,

.nextElementSibling.getElementsByTagName(' TABLE')[0]
...
Рейтинг: 0 / 0
nextSibling не работает c TR в IE11
    #38614528
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teo609,

поскольку верстка не "плотная" (есть переводы строки или пробелы между тегами), то в новом движке в ИЕ11 между элементами оказываются текстовые поля, как это происходит во всех других браузерах.

В данном конкретном случае я бы посоветовал вешать по щелчку какой-нибудь класс (например, "parent-cl") на самый верхний table в приведенной верстке, а видимость устанавливать в CSS
Код: css
1.
2.
3.
.parent-cl .nb table {
	display: none;
}
...
Рейтинг: 0 / 0
nextSibling не работает c TR в IE11
    #38614562
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teo609, можно использовать nextElementSibling. Он поддерживается в IE9+
...
Рейтинг: 0 / 0
nextSibling не работает c TR в IE11
    #38614587
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВадимСА,

ВадимСАЗамени на nextElementSibling и проверь на то чтобы это было то что тебе надо (текст, тег, табуляция…).


А как проверить что это тег?

имея в виду что Яростный Меч новом движке в ИЕ11 между элементами оказываются текстовые поля, как это происходит во всех других браузерах.
...
Рейтинг: 0 / 0
nextSibling не работает c TR в IE11
    #38614592
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teo609А как проверить что это тег?смотри у него nodeType
у элемента он равен 1, у текстовой ноды 3
...
Рейтинг: 0 / 0
nextSibling не работает c TR в IE11
    #38614641
ВадимСА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Яростный Меч,

Не надо нечего проверять, я же написал
Что надо сделать вторым сообщением___
Вот еще поясняю, в хтмшки у имежки (onclick="openOrCloseSubtable()" поменяй на onclick="f(this)")
Напиши функцию
function f(a){
var f_a = a.parentNode.parentNode.nextElementSibling.getElementsByTagName('TABLE')[0]
alert(f_a.tagName)
}
Тебе нужен был путь к таблю вот плиз и делай там дальше что угодно
...
Рейтинг: 0 / 0
nextSibling не работает c TR в IE11
    #38614674
ВадимСА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВадимСА,
__________________________________ Да моя неправда! В IE надо проверять, вот теперь должно работать!_____________

function nxtElmnt(elem){
var nextElem = elem.nextElementSibling;
if (nextElem === undefined) {
nextElem = elem.nextSibling;
while (nextElem && nextElem.nodeType != 1) {
nextElem = nextElem.nextSibling;
}
}
return nextElem;
}

function f(a){
var f_a = nxtElmnt(a.parentNode.parentNode).getElementsByTagName('TABLE')[0]
alert(f_a.tagName)
}
...
Рейтинг: 0 / 0
nextSibling не работает c TR в IE11
    #38615109
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем.

Все заработало.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / nextSibling не работает c TR в IE11
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]