418 Stimmen

Erstellen Sie ein Element mit ID?

Ich versuche, diesen Code zu ändern, um diesem Div-Element auch eine ID zu geben, allerdings habe ich nichts bei Google gefunden und idName funktioniert nicht. Ich habe etwas über append gelesen, aber es scheint ziemlich kompliziert für eine Aufgabe, die ziemlich einfach erscheint. Gibt es eine Alternative? Danke :)

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

5 Stimmen

Oder meinst du g.id = 'foo';?

1 Stimmen

Ich weiß jetzt, dass ich die Leiter gemeint habe :)

3 Stimmen

Diese Google-Suche liefert einige vernünftige Ergebnisse.

780voto

lkaradashkov Punkte 7961

Sie sollten die .setAttribute() Methode verwenden:

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

6 Stimmen

Mit diesem Code erstellen wir nicht nur die Element-ID, sondern auch für alle Attribute des Elements.

5 Stimmen

@Mai, kannst du das näher erklären? Ich verstehe den Satz nicht.

22 Stimmen

@mystrdat Ich glaube, Mai versucht zu sagen, dass setAttribute() verwendet werden kann, um neben der ID auch die anderen Attribute eines Elements zu erstellen.

145voto

g.d.d.c Punkte 44201

Sie können g.id = 'desiredId' aus Ihrem Beispiel verwenden, um die ID des von Ihnen erstellten Elements festzulegen.

0 Stimmen

Ich denke immer, dass die Antwort mit weniger Code am besten ist. Mehr kürzer ist nicht möglich. Danke.

79voto

raina77ow Punkte 100345
var g = document.createElement('div');
g.id = 'someId';

55voto

Guja1501 Punkte 961

Sie können Element.setAttribute verwenden

Beispiele:

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

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


Hier ist meine Funktion, um dies besser zu machen:

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;
}

Beispiel 1:

createElement("div");

wird dies zurückgeben:

Beispiel 2:

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

wird dies zurückgeben:

google

Beispiel 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_container = createElement("div",{"id":"links"},[google,youtube,facebook]);

wird dies zurückgeben:

    google
    youtube
    facebook

Sie können neue Elemente erstellen und Attribute festlegen und Kinder anhängen

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

Es gibt keine Begrenzung für Attribute oder Kind-Element(e)

8 Stimmen

Warum zum Teufel würdest du die Attribute mit deiner eigenen Syntax [die du parsen musst] übergeben, wenn du ein Standardobjekt verwenden kannst? Außerdem, wenn du viele Elemente erstellen musst, benötigst du ein Templatesystem [z.B. Handlebars] und keine überkomplizierten Funktionen.

4 Stimmen

Diese Funktion ist eine der ersten von meinen Funktionen und ich habe nicht darüber nachgedacht, sie zu aktualisieren. Ich finde deine Idee besser und werde sie auf jeden Fall ändern. Danke dafür.

10 Stimmen

Obwohl sie recht haben, danke für die Bereitstellung zusätzlicher Informationen und alternativer Vorgehensweisen. Sehr aufschlussreich.

16voto

Shyju Punkte 205236

Warum nicht das mit jQuery machen?

var newDiv= $('

8 Stimmen

Nicht jeder kann oder möchte jQuery verwenden. Aber wenn er es täte, könnte er einfach var g = $('

');

27 Stimmen

@BradleyMountford: Er hat die Frage mit jQuery getaggt. Deshalb habe ich eine jQuery-Lösung vorgeschlagen.

2 Stimmen

Obwohl die Spezifikation die Verwendung von reservierten Schlüsselwörtern als Eigenschaftsnamen nicht verbietet, ist es möglicherweise dennoch besser, class in Anführungszeichen zu setzen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X