Вкратце - с помощью чего можно задать присвоение класса блоку еще при загрузке страницы на нативном js?
var div = document.querySelector('div');
window.onload = () => {
div.className = 'div';
console.log(div)
}
<div></div>
Если в тот момент, когда загрузился HTML, но не загрузились картинки и фрэймы, то так:
document.addEventListener('DOMContentLoaded', function(){
var block = document.getElementById("block");
block.className += " myClass";
};
С помощью чего? Вы уже ответили себе на этот вопрос - с помощью JS.
Вероятно, вопрос в том, как?
Здесь сыграет роль следующая вещь. При загрузке страницы, если вы подразумеваете тот момент, когда она уже получена с сервера, но DOM еще не построен, сделать вы этого не сможете.
Правда, с одной небольшой оговоркой: DOM может быть и не построен, но тот элемент, которому вы хотите добавить класс, присутствовать обязан.
Поэтому, скрипт должен выполняться:
а) после полной готовности DOM
б) после готовности необходимого элемента
Навесить на документ обработчик события "DOMContentLoaded", выполняющийся тогда, когда DOM построена, после чего добавить блоку класс:
document.addEventListener("DOMContentLoaded", function() {
// код навешивания класса приведен ниже в ответе
});
Подключать внешний скрипт с атрибутом defer
, гарантирующим выполнение скрипта по готовности DOM:
<script src="script.js" defer>
Выполнять тело скрипта находится после необходимого элемента:
<div>Элемент, которому нужно добавить класс</div>
<script>// Сценарий добавления класса, опять же, приведен ниже</script>
Теперь о главном: как, собственно, добавить элементу класс?
Сначала находим необходимый элемент любым известным способом: это может быть поиск по id (document.getElementById
), поиск по CSS-пути (document.querySelector
), да по чему угодно, даже по классу, если у элемента, которому нужно его добавить, уже есть какой-либо класс. Дальше по ситуации выбираем наиболее подходящее решение:
element.className = "класс";
Минусы: такой подход полностью перезаписывает текущее значение атрибута class
. Например, если до выполнения скрипта класс элемента element
был равен class1 class2 myclass
, то теперь он будет равен просто класс
- предыдущие значения будут перезаписаны.
element.classList.add("Класс");
Данный подход добавит элементу класс. Предыдущие останутся, если были до этого. Если не было, то класс
станет единственным классом элемента element
.
Прочитал ответы, и если я правильно понял, вы хотите наоборот, до загрузки всего контента, чтобы был класс на блоке, тогда вы прям в html
ставьте данный класс для блока
<div class="loaded"></div>
а потом на js
,после загрузки всей страницы, удаляйте данный класс
window.onload = function() {
var div = document.querySelector('.loaded')
div.classList.remove("loaded");
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Привет всем! Стоит задача собрать исторические котировки по бумаге с сайта nasdaqcom для дальнейшей их обработки и вывода отчета в MS Excel
У меня есть массив [1, 2, 3, 4], а нужно получить [2, 1, 4, 3]Может в php есть готовое решение? А если нет, то можно пожалуйста пример такой функции
JoomlaПодскажите пожалуйста, как создать позицию для модуля или материала