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

Раньше в 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
14.04.2014, 17:11
    #38614502
ВадимСА
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nextSibling не работает c TR в IE11
teo609,

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

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

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

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

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


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

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

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

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


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