Muranx
@Muranx
кто понял this тот в цирке не смеётся

Как правильно описать функцию, применения CSS свойств к элементам HTML разметки?

Привет всем, цель, создать простенькую функцию, чтобы брать CSS свойства из объектов, и применять их к определённым элементом HTML разметки:
HTML :
<div class="some" id="some">
  
</div>

CSS :
.some{
  width: 100px;
  height: 100px;
}

Не рабочий на данный момент JS код :
var out=document.getElementById("some");

var oneStyle={
  backgroundColor: "gray"
};

function change(id, obj){
  for(var k in obj){
    ///НЕРАБОТАЮЩИЕ ВАРИАНТЫ///
    // id.style.k=obj[k]
    // id.style+k=obj[k]
    // (id+"."+style+"."+k)=String(obj[k])
    // (id+".style."+k)=obj[k]
    
    ///РАБОТАЕТ, НО ОФК НЕ ПОДХОДИТ. т.к. свойст же может быть не одно///
    // id.style.backgroundColor=obj[k]
  }
};

change(out, oneStyle)

В общем главная загвоздка у меня в этой самой индексной переменной k(ведь эта переменная является названием свойства объекта, её тип это строка), ну и взаимодействию этой переменной с id.style! Задача вроде бы банальнейшая, но вот что уже только не перепробовал, даже до абсурдных вариантов доходило. Ответ просьба писать на примере именно моей функции, не нужно создавать ваши варианты( хотя критика и предложения приветствуются, НО только после представленного решения ), т.к. меня интересует модификация именно моего примера! Спасибо!
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
Чтобы манипулировать "элементами HTML разметки", нужно дождаться их загрузки. В этом нам поможет событие DOMContentLoaded, на которое мы подпишемся с помощью addEventListener

var oneStyle={
  backgroundColor: "lime"
};

function change(el, obj)
{
  for(var k in obj)
  {
  	el.style[k] = obj[k];
  }
}

document.addEventListener("DOMContentLoaded", function(event) { 
	var el = document.getElementById("some");
	change( el, oneStyle )
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы