आईडी के साथ CreateElement?


288

मैं इस कोड को इस div आइटम को एक आईडी देने के लिए संशोधित करने की कोशिश कर रहा हूं, हालांकि मुझे Google पर कुछ भी नहीं मिला है, और idName काम नहीं करता है। मैंने एपेंड के बारे में कुछ पढ़ा , हालांकि यह एक कार्य के लिए बहुत जटिल लगता है जो बहुत सरल लगता है, तो क्या कोई विकल्प है? धन्यवाद :)

g=document.createElement('div'); g.className='tclose'; g.v=0;

4
या तुम्हारा मतलब है g.id = 'foo';?
17इमे विदा

1
अब मुझे पता है कि मैं सीढ़ी का मतलब था :)
pufAmuf

3
यह Google खोज कुछ उचित परिणाम देता है।
फेलिक्स क्लिंग

जवाबों:


522

आपको .setAttribute()विधि का उपयोग करना चाहिए :

g = document.createElement('div');
g.setAttribute("id", "Div1");

4
इस कोड के साथ, हम न केवल तत्व आईडी बना रहे हैं, बल्कि तत्व की सभी विशेषताओं के लिए भी बना रहे हैं।
माई

3
@ माई क्या आप आगे बता सकते हैं? मैं वाक्य नहीं समझ सकता।
रहस्योदय

15
@mystrdat मुझे लगता है कि माई यह कहना चाह रही है कि setAttribute () का उपयोग किसी तत्व की अन्य विशेषताओं को बनाने के लिए किया जा सकता है न कि केवल id के लिए।
चक एल

94

आपके g.id = 'desiredId'द्वारा बनाए गए तत्व की आईडी सेट करने के लिए आप अपने उदाहरण से उपयोग कर सकते हैं ।


मैं हमेशा यह बात करता हूं कि कम कोड वाला एनीवर्स सबसे अच्छा है। अधिक शॉट संभव नहीं है। धन्यवाद।
m3nda


34

आप उपयोग कर सकते हैं Element.setAttribute

उदाहरण:

g.setAttribute("id","yourId")

g.setAttribute("class","tclose")


यहाँ यह बेहतर करने के लिए मेरा कार्य है:

function createElement(element, attribute, inner) {
  if (typeof(element) === "undefined") {
    return false;
  }
  if (typeof(inner) === "undefined") {
    inner = "";
  }
  var el = document.createElement(element);
  if (typeof(attribute) === 'object') {
    for (var key in attribute) {
      el.setAttribute(key, attribute[key]);
    }
  }
  if (!Array.isArray(inner)) {
    inner = [inner];
  }
  for (var k = 0; k < inner.length; k++) {
    if (inner[k].tagName) {
      el.appendChild(inner[k]);
    } else {
      el.appendChild(document.createTextNode(inner[k]));
    }
  }
  return el;
}

उदाहरण 1:

createElement("div");

इसे वापस करेंगे:

<div></div>

उदाहरण 2:

createElement("a",{"href":"http://google.com","style":"color:#FFF;background:#333;"},"google");`

इसे वापस करेंगे:

<a href="http://google.com" style="color:#FFF;background:#333;">google</a>

उदाहरण 3:

var google = createElement("a",{"href":"http://google.com"},"google"),
    youtube = createElement("a",{"href":"http://youtube.com"},"youtube"),
    facebook = createElement("a",{"href":"http://facebook.com"},"facebook"),
    links_conteiner = createElement("div",{"id":"links"},[google,youtube,facebook]);

इसे वापस करेंगे:

<div id="links">
    <a href="http://google.com">google</a>
    <a href="http://youtube.com">youtube</a>
    <a href="http://facebook.com">facebook</a>
</div>

आप नए तत्व बना सकते हैं और विशेषता सेट कर सकते हैं और बच्चे को जोड़ सकते हैं

createElement("tag",{attr:val,attr:val},[element1,"some text",element2,element3,"or some text again :)"]);

अटर या चाइल्ड एलिमेंट की कोई सीमा नहीं है


7
पृथ्वी पर आप अपने स्वयं के सिंटैक्स [जिसे आपको पार्स करना है] के साथ विशेषताओं को पास करेंगे, जब आप एक मानक वस्तु का उपयोग कर सकते हैं? इसके अलावा, यदि आपको बहुत सारे तत्व बनाने की आवश्यकता है, तो आपको एक टेम्प्लेटिंग सिस्टम की आवश्यकता होती है [उदाहरण के लिए हैंडलबार] और ओवरक्लंपलिंग कार्यों को नहीं।
चाँदवॉ

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

7
हालांकि वे सही हैं, इसके बारे में अतिरिक्त जानकारी और वैकल्पिक तरीके प्रदान करने के लिए धन्यवाद। बहुत ही आनन्दमय।
फटा

15

JQuery के साथ ऐसा क्यों नहीं करते?

var newDiv= $('<div/>', { id: 'foo', class: 'tclose'})

7
हर कोई jQuery का उपयोग नहीं कर सकता है या नहीं करना चाहता है। लेकिन अगर वह थे, तो वह सिर्फ var g = $ ('<div id = "blah" class = "tclose">) कर सकता था;
ब्रैडली माउंटफोर्ड

24
@ ब्रैडलीमाउंटफोर्ड: उन्होंने प्रश्न को jQuery के साथ टैग किया। thay का मैंने एक jQuery समाधान सुझाया
Shyju

2
यद्यपि विनिर्देश आरक्षित खोजशब्दों के उपयोग को संपत्ति के नामों के रूप में मना नहीं करता है, फिर भी classउद्धरणों में रखना बेहतर हो सकता है ।
फेलिक्स क्लिंग


4

मुझे यकीन नहीं है कि अगर आप एक आईडी सेट करने की कोशिश कर रहे हैं तो आप इसे CSS में स्टाइल कर सकते हैं लेकिन अगर ऐसा है तो आप भी कोशिश कर सकते हैं:

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

g.className= "g";

और यह आपके div का नाम देगा ताकि आप इसे लक्षित कर सकें।

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