मैं जावास्क्रिप्ट में एक DOM तत्व के लिए एक वर्ग कैसे जोड़ सकता हूं?


253

मैं किस तरह के लिए एक वर्ग जोड़ सकता हूँ div?

var new_row = document.createElement('div');

6
बहुत बुरा कल्पना करने के लिए एक मानक के रूप में वर्गों को निर्दिष्ट करने की अनुमति नहीं है createElement।
Ga

यदि आप अन्य वर्गों को हटाए बिना एक वर्ग जोड़ना चाहते हैं , तो यह उत्तर देखें
मिशैल पेरोलाकोव्स्की

जवाबों:


447
new_row.className = "aClassName";

यहाँ MDN पर अधिक जानकारी है: className


5
कई वर्ग के नाम सेट करने के बारे में क्या?
शमौन

5
@ new_row.className = "aClassName1 aClassName2";इसकी एक विशेषता के रूप में, आप अपनी पसंद के किसी भी स्ट्रिंग को असाइन कर सकते हैं, भले ही यह अमान्य html के लिए बना हो
Darko Z

16
मैं यह भी सिफारिश करूंगा new_row.classList.add('aClassName');कि आप तब कई वर्ग के नाम जोड़ सकते हैं
StevenTsooo

@StevenTsooo ध्यान दें कि classListहै असमर्थित IE9 में या नीचे।
दिनुली

क्या कोड की एक पंक्ति में क्लासनाम के साथ एक तत्व बनाने का एक तरीका है - और अभी भी तत्व का संदर्भ मिलता है? उदाहरण के लिए: myEL = document.createElement ('div')। addClass ('yo') 'काम नहीं करेगा।
कोकोडोको

36

.classList.add()विधि का प्रयोग करें :

const element = document.querySelector('div.foo');
element.classList.add('bar');
console.log(element.className);
<div class="foo"></div>

यह विधि classNameसंपत्ति को अधिलेखित करने से बेहतर है , क्योंकि यह अन्य वर्गों को नहीं हटाता है और वर्ग को जोड़ता नहीं है यदि तत्व पहले से ही है।

आप element.classList( एमडीएन प्रलेखन देखें ) का उपयोग करके कक्षाओं को टॉगल या हटा सकते हैं ।


28

यहां फ़ंक्शन अप्रोच का उपयोग करके सोर्स कोड काम कर रहा है।

<html>
    <head>
        <style>
            .news{padding:10px; margin-top:2px;background-color:red;color:#fff;}
        </style>
    </head>

    <body>
    <div id="dd"></div>
        <script>
            (function(){
                var countup = this;
                var newNode = document.createElement('div');
                newNode.className = 'textNode news content';
                newNode.innerHTML = 'this created div contains a class while created!!!';
                document.getElementById('dd').appendChild(newNode);
            })();
        </script>
    </body>
</html>

8
इसलिए? यह एक उदाहरण के रूप में कार्य करता है, इसमें कुछ भी गलत नहीं है।
केरी

पुन "जबकि निर्मित" : आप मतलब है ", जबकि बनाया जा रहा" ? अपने उत्तर को संपादित करके जवाब दें , यहाँ टिप्पणियों में नहीं। अग्रिम में धन्यवाद।
पीटर मोर्टेंसन

एक स्पष्टीकरण क्रम में होगा। उदाहरण के लिए, "फंक्शन अप्रोच" से आपका क्या मतलब है ? क्या आप विस्तृत कर सकते हैं ( अपने उत्तर को संपादित करके , टिप्पणियों में यहाँ नहीं)? अग्रिम में धन्यवाद।
पीटर मोर्टेंसन

15

जावास्क्रिप्ट में ऐसा करने का DOM तरीका भी है:

// Create a div and set class
var new_row = document.createElement("div");
new_row.setAttribute("class", "aClassName");
// Add some text
new_row.appendChild(document.createTextNode("Some text"));
// Add it to the document body
document.body.appendChild(new_row);

2
var newItem = document.createElement('div');
newItem.style = ('background-color:red'); 
newItem.className = ('new_class');
newItem.innerHTML = ('<img src="./profitly_files/TimCover1_bigger.jpg" width=50 height=50> some long text with ticker $DDSSD');
var list = document.getElementById('x-auto-1');
list.insertBefore(newItem, list.childNodes[0]);

2
यह समझाने पर विचार करें कि आपने इसे क्यों पोस्ट किया है, यह दूसरों को सीखने में मदद करेगा।
थॉमस स्माइथ

वोट दिया क्योंकि यह देशी जावास्क्रिप्ट / वेनिला जावास्क्रिप्ट है और इसे किसी अन्य पुस्तकालय या ढांचे की आवश्यकता नहीं है।
obotezat

एक स्पष्टीकरण क्रम में होगा।
पीटर मोर्टेंसन

1
var new_row = document.createElement('div');

new_row.setAttribute("class", "YOUR_CLASS");

यह काम करेगा ;-)

स्रोत


यह एक अच्छा समाधान नहीं है क्योंकि यह दृष्टिकोण सभी ब्राउज़रों पर काम नहीं करता है। setAttribute आज उपयोग में केवल 60% ब्राउज़रों द्वारा समर्थित है। caniuse.com/#search=setAttribute
रागों


0

यदि आप उदाहरण के लिए एक नया इनपुट फ़ील्ड बनाना चाहते हैं file:

 // Create a new Input with type file and id='file-input'
 var newFileInput = document.createElement('input');

 // The new input file will have type 'file'
 newFileInput.type = "file";

 // The new input file will have class="w-95 mb-1" (width - 95%, margin-bottom: .25rem)
 newFileInput.className = "w-95 mb-1"

उत्पादन होगा: <input type="file" class="w-95 mb-1">


यदि आप जावास्क्रिप्ट का उपयोग करके नेस्टेड टैग बनाना चाहते हैं, तो सबसे सरल तरीका innerHtmlनिम्न है:

var tag = document.createElement("li");
tag.innerHTML = '<span class="toggle">Jan</span>';

उत्पादन होगा:

<li>
    <span class="toggle">Jan</span>
</li>

0

क्रॉस-ब्राउज़र समाधान

नोट: classListसंपत्ति इंटरनेट एक्सप्लोरर 9 में समर्थित नहीं है । निम्नलिखित कोड सभी ब्राउज़रों में काम करेगा:

function addClass(id,classname) {
  var element, name, arr;
  element = document.getElementById(id);
  arr = element.className.split(" ");
  if (arr.indexOf(classname) == -1) { // check if class is already added
    element.className += " " + classname;
  }
}

addClass('div1','show')

स्रोत: कैसे जेएस वर्ग को जोड़ने के लिए


-3

यह भी चलेगा।

$(document.createElement('div')).addClass("form-group")

5
केवल अगर आप jQuery का उपयोग कर रहे हैं।
डेन गुयेन

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