Dodaj styl wbudowany za pomocą JavaScript


91

Próbuję dodać ten kod do dynamicznie utworzonego elementu div

style = "width:330px;float:left;" 

Kod, w którym tworzy dynamikę, divto

var nFilter = document.createElement('div');
nFilter.className = 'well';
nFilter.innerHTML = '<label>' + sSearchStr + '</label>';

Moim pomysłem jest dodanie stylu po, < div class="well"ale nie wiem, jak bym to zrobił.


1
Jaką to robi różnicę? Styl inline zawsze będzie miał najwyższą specyfikę.
Amberlamps

ponieważ div jest tworzony dynamicznie, nie mogę używać statycznego, ponieważ jest to kompletny skrypt biblioteki JavaScript
Curtis Crewe,

Może to jest problem XY. Co próbujesz osiągnąć? Czy nFilter.style.width = '330px'; nFilter.style.float = 'left';to, czego szukasz?
Amberlamps

Odpowiedzi:


127
nFilter.style.width = '330px';
nFilter.style.float = 'left';

Powinno to dodać styl wbudowany do elementu.


37

Możesz to zrobić bezpośrednio na stylu:

var nFilter = document.createElement('div');
nFilter.className = 'well';
nFilter.innerHTML = '<label>'+sSearchStr+'</label>';

// Css styling
nFilter.style.width = "330px";
nFilter.style.float = "left";

// or
nFilter.setAttribute("style", "width:330px;float:left;");

6
Nie stylizacja CSS, ale trzecia opcja z setAttribute zadziałała idealnie.
milkersarac

16

Korzystanie z jQuery:

$(nFilter).attr("style","whatever");

Inaczej :

nFilter.setAttribute("style", "whatever");

powinno działać


6
W tym przypadku nie jest konieczne używanie JQuery
Dharman,

10
Daje alternatywne rozwiązanie bez JQuery. Nie widzę potrzeby głosowania przeciw.
Termato

Prawidłowe, żądane rozwiązanie Vanilla JS jest rozwiązaniem alternatywnym? Czy nie ta, o którą nikt nie pytał, dotyczyła biblioteki, o której nikt nie wspomniał?
Silvio Langereis

14

Możesz spróbować z tym

nFilter.style.cssText = 'width:330px;float:left;';

To powinno wystarczyć.


10
var div = document.createElement('div');
div.setAttribute('style', 'width:330px; float:left');
div.setAttribute('class', 'well');
var label = document.createElement('label');
label.innerHTML = 'YOUR TEXT HERE';
div.appendChild(label);

7

Kilka osób ma przykład używania setAttribute, który mi się podoba. Zakłada się jednak, że nie masz obecnie ustawionych żadnych stylów. Może zrobiłbym coś takiego:

nFilter.setAttribute('style', nFilter.getAttribute('style') + ';width:330px;float:left;');

Lub przekształć go w funkcję pomocniczą, taką jak ta:

function setStyle(el, css){
  el.setAttribute('style', el.getAttribute('style') + ';' + css);
}

setStyle(nFilter, 'width:330px;float:left;');

Daje to pewność, że możesz dodawać do niego style w sposób ciągły i nie usunie żadnego aktualnie ustawionego stylu, zawsze dołączając do bieżących stylów. Dodaje również dodatkowy średnik, więc jeśli w jakimś stylu kiedykolwiek brakuje jednego, doda inny, aby upewnić się, że jest w pełni oddzielony.


3

powinieneś stworzyć klasę css, .my_stylea następnie użyć.addClass('.mystyle')


3

Jeśli nie chcesz dodawać każdej właściwości css wiersz po wierszu, możesz zrobić coś takiego:

document.body.insertAdjacentHTML('afterbegin','<div id="div"></div>');

/**
 * Add styles to DOM element
 * @element DOM element
 * @styles object with css styles
 */
function addStyles(element,styles){
  for(id in styles){
    element.style[id] = styles[id];
  }
}

// usage
var nFilter = document.getElementById('div');
var styles = {
  color: "red"
  ,width: "100px"
  ,height: "100px"
  ,display: "block"
  ,border: "1px solid blue"
}
addStyles(nFilter,styles);




-1

Zrób to z css teraz, gdy utworzyłeś klasę. .well {width: 330px; float: left; }

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.