Я попытался скрыть некоторый элемент таблицы JavaScript
Для элемента <td>
это ОК:
function hide(){
var x=document.getElementsByTagName('td');
for(var i in x){
x[i].style.visibility='hidden';
}
}
Но когда я сделал то же самое с <th>
элементами, это не ОК
function hide(){
var x=document.getElementsByTagName('th');
for(var i in x){
x[i].style.visibility='hidden';
}
}
Некоторое тело, пожалуйста, скажите мне, почему? И как я могу справиться?
Здесь мой HTML
<table>
<thead>
<tr>
<th>header 1</th>
<th>header 2</th>
<th>header 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>content 1.1</td>
<td>content 1.2</td>
<td>content 1.3</td>
</tr>
<tr>
<td>content 2.1</td>
<td>content 2.2</td>
<td>content 2.3</td>
</tr>
</tbody>
Там странная вещь, когда я это делаю
function hide(){
var x=document.getElementsByTagName('td');
for(var i in x){
x[i].style.visibility='hidden';
}
var y=document.getElementsByTagName('th');
for(var i in y){
y[i].style.visibility='hidden';
}
}
Функция работает некорректно, только элементы скрываются, все еще видны.
Но когда я разделяю на две функции, он работает правильно.
Я использую Chrome.
Почему это произошло?
Не используйте for-in
для итерации над NodeList
. Объект NodeList имеет свойства, которые не являются элементами списка. Он получает ошибку, когда i
является "length"
, потому что x["length"]
не имеет свойства style
.
function hide(){
var x=document.getElementsByTagName('th');
for(var i = 0; i < x.length; i++){
x[i].style.visibility='hidden';
}
}
как в Бармаре.
$(document).ready(function(){
var x=document.getElementsByTagName('th');
for(var i = 0; i < x.length; i++){
x[i].style.display ='none';
}
});
Демо-версия:
hide
для<td>
и<th>
?