Fügen Sie einen Inline-Stil mit Javascript hinzu


87

Ich versuche, diesen Code einem dynamisch erstellten div-Element hinzuzufügen

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

Der Code, in dem die Dynamik erstellt wird, divlautet

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

Meine Idee ist es, den Stil danach hinzuzufügen, < div class="well"aber ich weiß nicht, wie ich es machen würde.


1
Welchen Unterschied macht es? Der Inline-Stil hat immer die höchste Spezifität.
Amberlamps

Da das Div dynamisch erstellt wird, kann ich kein statisches verwenden, da es ein vollständiges Javascript-Bibliotheksskript ist
Curtis Crewe

Vielleicht ist das ein XY-Problem. Was versuchst du zu erreichen? Ist nFilter.style.width = '330px'; nFilter.style.float = 'left';was du suchst?
Amberlamps

Antworten:


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

Dies sollte dem Element einen Inline-Stil hinzufügen.


36

Sie können es direkt auf dem Stil tun:

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
Nicht das CSS-Styling, sondern die dritte Option mit setAttribute hat für mich perfekt funktioniert.
Milkersarac

15

Verwenden von jQuery:

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

Andernfalls :

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

sollte arbeiten


5
Es ist nicht notwendig, JQuery in diesem Fall zu verwenden
Dharman

9
Er gibt eine alternative Lösung ohne JQuery. Ich sehe keine Notwendigkeit für eine Ablehnung.
Termato

Die richtige, angeforderte Vanilla JS-Lösung ist die alternative Lösung? Nicht die, nach der niemand gefragt hat, betrifft eine Bibliothek, die niemand erwähnt hat?
Silvio Langereis

12

Sie können es damit versuchen

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

Das sollte es für dich tun.


9
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);

6

Einige Leute haben ein Beispiel mit setAttribute, das mir gefällt. Es wird jedoch davon ausgegangen, dass derzeit keine Stile festgelegt sind. Ich würde vielleicht so etwas machen wie:

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

Oder machen Sie es zu einer Hilfsfunktion wie dieser:

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

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

Dadurch wird sichergestellt, dass Sie kontinuierlich Stile hinzufügen können, und es werden keine derzeit festgelegten Stile entfernt, indem immer an die aktuellen Stile angehängt wird. Außerdem wird ein zusätzliches Semikolon hinzugefügt, sodass bei einem fehlenden Stil ein anderer angehängt wird, um sicherzustellen, dass er vollständig abgegrenzt ist.


2

Sie sollten eine CSS-Klasse erstellen und .my_styledann verwenden.addClass('.mystyle')


2

Wenn Sie nicht jede CSS-Eigenschaft zeilenweise hinzufügen möchten, können Sie Folgendes tun:

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);



0

Versuchen Sie so etwas

document.getElementById("vid-holder").style.width=300 + "px";

-1

Machen Sie es jetzt mit CSS, nachdem Sie die Klasse erstellt haben. .well {width: 330px; float: left; }}

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.