Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поиск элементов по тэгу - getElementsByTagName('table') (https://javascript.ru/forum/misc/34986-poisk-ehlementov-po-tehgu-getelementsbytagname-%27table%27.html)

lamer 27.01.2013 03:06

Поиск элементов по тэгу - getElementsByTagName('table')
 
Здравствуйте, не могу понять почему не работает поиск по элементов по тегу: getElementsByTagName('table')
Все делаю правильно, но не работает, в чем причина ?

<html>

<head>
</head>

<body>
<table width="400" valign="top" border="1">
	<tr>
		<td>111</td>
		<td>222</td>
	</tr>
	<tr>
		<td>333</td>
		<td>444</td>
	</tr>
</table>
<br>
<table width="400" valign="top" border="1">
	<tr>
		<td>555</td>
		<td>666</td>
	</tr>
	<tr>
		<td>777</td>
		<td>888</td>
	</tr>
</table>
<br>
<input type="button" value="displayNoNe" onclick="displayNoNe();">

<script type="text/javascript">
function displayNoNe() {
var elems = document.getElementsByTagName('table')[0];
for (i=0; i < elems.length; i++) {
	if (elems[i].width == 400 && elems[i].vAlign == 'top') {
		elems[i].style.display = 'none';
			break;
		}
	}
}
</script>
</body>

</html>

Deff 27.01.2013 05:02

<html>

<head>
</head>

<body>
<table width="400" valign="top" border="1">
	<tr>
		<td>111</td>
		<td>222</td>
	</tr>
	<tr>
		<td>333</td>
		<td>444</td>
	</tr>
</table>
<br>
<table width="400" valign="top" border="1">
	<tr>
		<td>555</td>
		<td>666</td>
	</tr>
	<tr>
		<td>777</td>
		<td>888</td>
	</tr>
</table>
<br>
<input type="button" value="displayNoNe" onclick="displayNoNe()">

<script type="text/javascript">
function displayNoNe() {
var elems = document.getElementsByTagName('table');
  for (i=0; i < elems.length; i++) {
        if (elems[i].width == 400 && elems[i].getAttribute('valign') == 'top') {
	  elems[i].style.display = 'none';
             break;
        }
  }
}
</script>
</body>

</html>

lamer 27.01.2013 06:52

Deff, спасибо =)

lamer 31.01.2013 05:06

Deff, скажите почему подобный метод не работает с атрибутом for в IE ?

<html>

<head>
</head>

<body>
<label for="info">INFO</label>

<script>
var elems_one = document.getElementsByTagName('label');
for (i=0; i < elems_one.length; i++) {
	if (elems_one[i].getAttribute('for') == 'info') {
		elems_one[i].style.display = 'none'; break;
	}
}
</script>
</body>

</html>

lamer 31.01.2013 05:47

Разобрался:
Цитата:

В IE также является исключением ключевое атрибут for, для него используется свойство forHtml.
т.е. нужно определить браузер и только потом выдавать либо getAttribute('forHtml') либо getAttribute('for')

Кроссбраузерных вариантов нету ?

danik.js 31.01.2013 05:48

Работает в IE8-9, только что смотрел

lamer 31.01.2013 05:49

Если без определения браузера выводить сразу 2 кода это не будет плохо сказываться на чем либо ?
В консоли посмотрел вроде нет ошибок

<html>

<head>
</head>

<body>
<label for="info">INFO</label>

<script>
var elems_one = document.getElementsByTagName('label');

for (i=0; i < elems_one.length; i++) {
	if (elems_one[i].getAttribute('for') == 'info') {
		elems_one[i].style.display = 'none'; break;
	}
}

for (i=0; i < elems_one.length; i++) {
	if (elems_one[i].getAttribute('htmlFor') == 'info') {
		elems_one[i].style.display = 'none'; break;
	}
}
</script>
</body>

</html>

danik.js 31.01.2013 05:54

<html>
 
<head>
</head>
 
<body>
<label for="info">INFO</label>
 
<script>
var elems_one = document.getElementsByTagName('label');
for (i=0; i < elems_one.length; i++) {
    if (elems_one[i].htmlFor === 'info') {
        elems_one[i].style.display = 'none'; break;
    }
}
</script>
</body>
 
</html>


А так работает?

lamer 31.01.2013 05:58

danik.js, супер =) Спасибо работает и в IE и FF, а то я уже начал мудрить с кучей кода =)


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