простой скрипт выполняется, но консоль предупреждает ~ = 'getComputedStyle' в 'Window': параметр не относится к типу 'Element' - PullRequest
0 голосов
/ 19 марта 2019

Это удаляет фиксированные строки меню в верхней части веб-страниц (как в SO) при запуске в консоли Chrome. Есть несколько других вопросов, подобных этому, но они спрашивают «почему это не выполняется» (синтаксические ошибки?) - это простой и легко проверяемый пример, который выполняет, но предупреждает:

Uncaught TypeError: Не удалось выполнить 'getComputedStyle' в 'Window': параметр 1 не относится к типу «Элемент».

    var target = document.getElementsByTagName("*");
    for(ii in target){
        if(window.getComputedStyle(target[ii]).position === 'fixed'){
           target[ii].style.display = 'none';
           console.log('it"s gone');
        }
    }

getElementsByTagName возвращает список активных узлов, как они не считаются элементами?

1 Ответ

1 голос
/ 19 марта 2019

Проблема в том, что for .. in даст вам больше, чем просто индексы для этого массива, подобного объекту (это не массив, я думаю, что это HTMLCollection или NodeList

решение 1: проверкаесли target.hasownPropert (ii) имеет значение true

var target = document.getElementsByTagName("*");
for(var ii in target){
    if(target.hasOwnProperty(ii)) {
        if(window.getComputedStyle(target[ii]).position === 'fixed'){
           target[ii].style.display = 'none';
           console.log('it"s gone');
        }
    }
}

решение 2: использовать для ... of

var target = document.getElementsByTagName("*");
for(var ii of target){
    if(window.getComputedStyle(ii).position === 'fixed'){
       ii.style.display = 'none';
       console.log('it"s gone');
    }
}

решение 3: использовать document.querySelectorAll

document.querySelectorAll('*').forEach(ii => {
    if(window.getComputedStyle(ii).position === 'fixed'){
       ii.style.display = 'none';
       console.log('it"s gone');
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...