Скрытие элемента <th> с помощью JavaScript

0

Я попытался скрыть некоторый элемент таблицы 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.
Почему это произошло?

  • 3
    выглядит хорошо здесь. Пожалуйста, оставьте свою HTML-разметку
  • 1
    Вы также можете поделиться соответствующим HTML-кодом? также как вы вызываете функцию hide для <td> и <th> ?
Показать ещё 4 комментария
Теги:

2 ответа

4
Лучший ответ

Не используйте 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';  
    }  
}

FIDDLE

  • 0
    Это сработало. Спасибо, Бармар.
1

как в Бармаре.

$(document).ready(function(){
    var x=document.getElementsByTagName('th');  
    for(var i = 0; i < x.length; i++){  
         x[i].style.display ='none';  
    }   
});

Демо-версия:

http://jsfiddle.net/patelriki13/r5Ua5/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню