जावास्क्रिप्ट का उपयोग करके इनलाइन शैली जोड़ें


91

मैं इस कोड को गतिशील रूप से निर्मित div तत्व में जोड़ने का प्रयास कर रहा हूं

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

जिस कोड में डायनेमिक बनता divहै

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

मेरा विचार शैली को जोड़ने के बाद है, < div class="well"लेकिन मुझे नहीं पता कि मैं इसे कैसे करूँगा।


1
क्या फर्क पड़ता है? इनलाइन शैली में हमेशा उच्चतम विशिष्टता होगी।
Amberlamps

क्योंकि div गतिशील रूप से बनाया गया है, मैं स्थैतिक का उपयोग नहीं कर सकता क्योंकि यह एक पूरी जावास्क्रिप्ट लाइब्रेरी स्क्रिप्ट है
कर्टिस क्रेवे

शायद यह एक XY समस्या है। आप क्या हासिल करने का प्रयास कर रहे हैं? है nFilter.style.width = '330px'; nFilter.style.float = 'left';आप के लिए क्या देख रहे हैं?
Amberlamps

जवाबों:


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

यह तत्व में एक इनलाइन शैली जोड़ना चाहिए।


37

आप इसे सीधे शैली पर कर सकते हैं:

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 स्टाइलिंग नहीं, लेकिन setAttribute के साथ तीसरे विकल्प ने मेरे लिए एकदम सही काम किया।
दूधसरक

16

JQuery का उपयोग करना:

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

अन्यथा :

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

कार्य करना चाहिए


6
इस मामले में JQuery का उपयोग करना अनावश्यक है
धर्म

10
वह JQuery के बिना एक वैकल्पिक समाधान देता है। अधोगति की आवश्यकता न देखें।
टर्मो जूल

वैनिला जेएस समाधान का सही, वैकल्पिक समाधान है? नहीं एक किसी के लिए कहा है कि एक पुस्तकालय किसी का उल्लेख भी शामिल है?
सिल्वियो लैंगेरिस


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

कुछ लोगों के पास एक उदाहरण है जो मुझे पसंद है। हालाँकि यह मानता है कि वर्तमान में आपके पास कोई शैली नहीं है। मैं शायद कुछ ऐसा करूंगा:

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

या इसे इस तरह से एक सहायक समारोह में बनाएँ:

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

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

यह सुनिश्चित करता है कि आप इसमें लगातार शैलियों को जोड़ सकते हैं और यह वर्तमान शैली को वर्तमान शैली में हमेशा के लिए जोड़कर किसी भी शैली को नहीं हटाएगा। यह एक अतिरिक्त अर्ध उपनिवेश भी जोड़ता है ताकि यदि कोई शैली कभी गायब हो जाए तो यह एक और जोड़ देगा यह सुनिश्चित करने के लिए कि यह पूरी तरह से सीमांकित है।


3

यदि आप एक सीएसएस वर्ग बनाना चाहिए .my_styleतो का उपयोग.addClass('.mystyle')


3

यदि आप प्रत्येक css प्रॉपर्टी लाइन को लाइन से नहीं जोड़ना चाहते हैं, तो आप कुछ इस तरह से कर सकते हैं:

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

अब सीएसएस के साथ यह करें कि आपने कक्षा बनाई है। .well {चौड़ाई: 330px; बाईंओर तैरना; }

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.