WIndow.onload () не работает в IE, чтобы скрыть строки таблицы - PullRequest
0 голосов
/ 31 октября 2011
window.onload = function(e){ 
     cells = document.getElementsByName('assetID');
     for(j = 0; j < cells.length; j++) cells[j].style.display = 'none';
     cellsBMPartNo = document.getElementsByName('BMPartNo');
     for(j = 0; j < cellsBMPartNo.length; j++) cellsBMPartNo[j].style.display = 'none';
     defaultAssetTableValues();
}

Я просто скрываю строки таблицы по имени. Смотрите строки 2 и 4. Он отлично работает в Firefox, но не в IE. Я что-то упустил?

Ответы [ 3 ]

1 голос
/ 31 октября 2011

IE не видит элементы, добавленные в документ динамически (через DOM) с getElementsByName. Ваши элементы созданы таким образом?

Есть другие проблемы с этим методом в разных версиях IE. В качестве обходного пути вы можете использовать getElementsByTagName('td'), а затем проверить, соответствует ли атрибут name тому, который вы ищете в цикле for, итерируя по массиву элементов.

Вот "IE-fixed" версия getElementsByName:

function getElementsByName2(tag, name) {
    var els = document.getElementsByTagName(tag);
    var arr = [];
    for (var i = 0; i < els.length; i++) {
        if (els[i].getAttribute("name") == name) {
            arr.push(els[i]);
        }   
    }
    return arr;
}

И вы бы использовали это так (для элементов в ячейках таблицы с именем 'assetID'):

var cells = getElementsByName2('td', 'assetID');
0 голосов
/ 31 октября 2011

Я думаю, что проблема может заключаться в том, что элементы <tr> и <td> действительно не поддерживают атрибут "name". IE не жалуется напрямую, но его функция "getElementsByName ()" не будет обращать внимание на подобные элементы.

Возможно, вы захотите использовать вместо этого значение "class".

0 голосов
/ 31 октября 2011

IE может искать name с assetID. Вы идентифицируете assetID в атрибуте имени?

, как отмечали другие, атрибут name не предназначен для TD 100 *

я заметил, что у вас есть необъявленные переменные, cells, j, j, cellsBMPartNo также для одной из j's установите одну из них на i, например, чтобы было проще следовать ей

...