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.