2013-02-07 12 views
48

Ich versuche, diesen Code zu einem dynamisch erstellt div Element, in demhinzufügen Inline-Stil mit Javascript

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

Der Code hinzuzufügen, erstellt der dynamische div

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

ist meine Idee hinzuzufügen ist der Stil nach < div class="well", aber ich weiß nicht, wie ich es tun würde.

+0

Welchen Unterschied macht es? Inline-Stil wird immer die höchste Spezifität haben. – Amberlamps

+0

Da das div dynamisch erstellt wird, kann ich nicht statisch verwenden, da es ein vollständiges JavaScript-Bibliotheksskript ist. –

+0

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

Antwort

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

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

1

sollten Sie eine CSS-Klasse .my_style dann .addClass('.mystyle')

0

es jetzt mit CSS verwenden Sie, dass Sie die Klasse erstellt haben. .well { Breite: 330px; Schwimmer: links; }

7

Mit jQuery:

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

Ansonsten:

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

sollte

+1

Es ist unnötig, in diesem Fall JQuery zu verwenden – Dharman

+3

Er gibt eine alternative Lösung ohne JQuery. Ich sehe keinen Bedarf für einen Downvote. – Termato

20

arbeiten Sie es auf den Stil direkt tun können:

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;"); 
+2

Nicht das CSS-Styling, sondern die dritte Option mit setAttribute funktionierte perfekt für mich. – milkersarac

0

Verwenden cssText

nFilter.style.cssText +=';width:330px;float:left;'; 
6
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

können Sie versuchen, mit diesem

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

, dass es für Sie tun sollten.

+0

Funktioniert nicht, bis 'CSSRule' angewendet wird. – Praveen

0

Versuchen so etwas wie dieses

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

Wenn Sie nicht jede CSS-Eigenschaft Zeile für Zeile hinzufügen möchten, können Sie etwas 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

Ein paar Leute haben ein Beispiel mit setAttribute, das ich mag. Es wird jedoch davon ausgegangen, dass derzeit keine Stile festgelegt sind. Ich würde vielleicht so etwas wie:

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

oder in eine Hilfsfunktion wie diese machen:

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

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

Dies stellt sicher, dass Sie Stile kontinuierlich hinzufügen und es wird nicht jede mögliche Art entfernen Derzeit festgelegt, indem immer an die aktuellen Stile angefügt wird. Es fügt auch einen zusätzlichen Semikolon hinzu, so dass, wenn es einen Stil gibt, der jemals einen fehlt, ein anderer angefügt wird, um sicherzustellen, dass er vollständig abgegrenzt ist.

Verwandte Themen