Javascript kullanarak satır içi stil ekleyin


91

Bu kodu dinamik olarak oluşturulmuş bir div öğesine eklemeye çalışıyorum

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

Kod hangi dinamik yaratır divolduğunu

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

Benim fikrim stili sonradan eklemek < div class="well"ama nasıl yapardım bilmiyorum.


1
Ne fark eder ki? Satır içi stil her zaman en yüksek özgüllüğe sahip olacaktır.
Amberlamps

div dinamik olarak oluşturulduğundan, tam bir Javascript kitaplık betiği olduğundan statik kullanamıyorum
Curtis Crewe

Belki bu bir XY problemidir. Ne elde etmeye çalışıyorsun Aradığınız nFilter.style.width = '330px'; nFilter.style.float = 'left';şey mi?
Amberlamps

Yanıtlar:


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

Bu, öğeye bir satır içi stil eklemelidir.


37

Bunu doğrudan stil üzerinde yapabilirsiniz:

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
CSS stili değil, setAttribute ile üçüncü seçenek benim için mükemmel çalıştı.
milkersarac

16

JQuery kullanarak:

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

Aksi takdirde :

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

çalışmalı


6
Bu durumda JQuery kullanmak gereksizdir
Dharman

10
JQuery olmadan alternatif bir çözüm sunuyor. Olumsuz oy kullanma gereğini görmeyin.
Termato

Doğru, istenen vanilya JS çözümü alternatif çözüm mü? Kimsenin istemediği kişi, kimsenin bahsetmediği bir kütüphane değil mi?
Silvio Langereis

14

Bununla deneyebilirsin

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

Bunu senin için yapmalı.


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

Birkaç kişinin sevdiğim setAttribute kullanan bir örneği var. Ancak, şu anda ayarlanmış herhangi bir stilinizin olmadığını varsayar. Belki şöyle bir şey yapardım:

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

Veya aşağıdaki gibi yardımcı bir işleve dönüştürün:

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

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

Bu, ona sürekli olarak stiller ekleyebilmenizi sağlar ve her zaman mevcut stillere ekleyerek o anda ayarlanmış herhangi bir stili kaldırmaz. Aynı zamanda fazladan bir noktalı virgül ekler, böylece eksik bir stil varsa, tamamen sınırlandırıldığından emin olmak için bir tane daha ekler.


3

bir css sınıfı yapmalı ve .my_stylesonra kullanmalısınız.addClass('.mystyle')


3

Her css özelliğini satır satır eklemek istemiyorsanız, bunun gibi bir şey yapabilirsiniz:

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

Bunun gibi bir şey dene

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

-1

Sınıfı oluşturduğunuza göre bunu css ile yapın. .well {genişlik: 330px; şamandıra: sol; }

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.