getElementsByClassName кроссбраузерно
Часто в работе требуется выбирать из DOM елементы по имени класса. Вообще у объекта document в JavaScript есть метод getElementsByClassName но к сожалению он реализован не во всех браузерах. Угадайте а каких браузерах его нет? Правильно в "любимом" IE, а возможно и ещё в каких либо... Предлагаю вам свою кроссбраузерную реализацию метода getElementsByClassName:
// Если все таки getElementsByClassName поддерживается браузером, // надобность в нашей реализации отпадает - будем использовать // стандартную. Так как она в любом случае будет быстрее. if(!document.getElementsByClassName) { document.getElementsByClassName = function (class_name) { // Получим коллекцию элементов тега body: var elements = document.body.getElementsByTagName("*"), length = elements.length, out = [], i; // Пройдёмся по ним... увы циклом: for (i = 0; i < length; i += 1) { // Поместим в результирующий массив элементы, содержащие требуемый класс: if (elements[i].className.indexOf(class_name) !== -1) { out.push(elements[i]); } } return out; }; }
На самом деле этот код мог бы быть ещё короче:
if(!document.getElementsByClassName) { document.getElementsByClassName = function(class_name) { var elements = document.body.getElementsByTagName("*"), length = elements.length, i; for (i = 0; i < length; i += 1) { if (elements[i].className.indexOf(class_name) === -1) { delete elements[i]; } } return elements; } }
Но IE8 выдаёт ошибку на строку: delete elements[i]; мол "Команда не поддерживается объектом". Здесь у нас в elements имеется object HTMLCollection - он то по ходу дела и не поддерживает применения к себе оператора delete. А какие мысли у вас на сей счёт?
Https://mlmsk.ru
https://mlmsk.ru купить сушильная машина miele tef775wp chrome edition.
mlmsk.ru
Добавить комментарий
Информация копипастерам
Внимание! Копирование контента с сайта, возможно только с разрешения администратора. Т.е. Меня! Я скорее всего разрешу Вам это сделать, в обмен на живую ссылку, на статью оригинал.