Ошибка во-первых, в том, что кавычки и знак равно в твоем массиве не нужны. Ты передаешь строку в таком виде, в котором она должна выглять как в CSS
Во-вторых твой цикл не имеет никакого смысла. Ты просто прибавляешь к какой-то строке другую строку, которые нигде не используешь
Вот пример рабочего кода
var div = document.querySelector(".lightblue");
var style = [
"background-color:lightblue;",
"width:100px;",
"height:100px;",
];
var strDivStyle = "";
for(var i = 0; i < style.length; i++) {
strDivStyle += style[i];
}
div.style.cssText = strDivStyle;
да где ж один в один. Первая строчка. Так не делается. В первой вы только находите нужный дом-элемент. Нужно всего-то переставить ".style.cssText" в последнюю строчку, чтобы получилось "div.style.cssText = x;" и все заработает
anamorph: если не задавать div = document.querySelector(".lightblue").style.cssText;
а просто div = document.querySelector(".lightblue");
а уже потом div.style.cssText += style[i];
то всё работает, почему так?
я вам сто процентов точно ответить не смогу, но я так думаю, что это связанно с асинхронностью языка. Дело в том, что методы выполняются не друг за другом, а кто первее, и так как поиск выполняется дольше, чем запрос стиля, то выходит, что стиль мы запрашиваем у undefined
а насчет второго вопроса, нерабочий код станет рабочим, если допишите внизу
div.style.cssText = divStyle
дело в том, что во второй строчке вы присваиваете переменной divStyle пустую строку, ведь div.style.cssText содержит в себе ничто иное как строку с уже имеющимися стилями
но далее, после цикла, divStyle никуда не присваивается, div.style.cssText не меняется, и соответственно изменений нет