CreateElement con id?


288

Estoy tratando de modificar este código para también darle una identificación a este elemento div, sin embargo, no he encontrado nada en google y idName no funciona. Leí algo sobre append , sin embargo, parece bastante complicado para una tarea que parece bastante simple, entonces, ¿hay alguna alternativa? Gracias :)

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

44
¿O quieres decir g.id = 'foo';?
Šime Vidas

1
Ahora sé que me refería a la escalera :)
pufAmuf

3
Esta búsqueda en Google arroja algunos resultados razonables.
Felix Kling

Respuestas:


522

Deberías usar el .setAttribute()método:

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

44
Con este código, estamos creando no solo la ID del elemento sino también para todos los atributos del elemento.
Mai

3
@Mai ¿Puedes explicar más? No puedo entender la oración.
mystrdat

15
@mystrdat Creo que Mai está tratando de decir que setAttribute () se puede usar para crear los otros atributos de un elemento y no solo la identificación.
Chuck L

94

Puede usar g.id = 'desiredId'su ejemplo para establecer la identificación del elemento que ha creado.


Siempre pienso que el annwer con menos código es el mejor. Más tiro no es posible. Gracias.
m3nda


34

Puedes usar Element.setAttribute

Ejemplos:

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

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


Aquí está mi función para hacerlo mejor:

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

Ejemplo 1:

createElement("div");

devolverá esto:

<div></div>

Ejemplo 2

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

devolverá esto:

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

Ejemplo 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]);

devolverá esto:

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

Puede crear nuevos elementos y establecer atributos y agregar hijos.

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

No hay límite para attr o elemento (s) secundario (s)


66
¿Por qué pasarías los atributos con tu propia sintaxis [que tienes que analizar], cuando puedes usar un objeto estándar? Además, si necesita crear muchos elementos, necesita un sistema de plantillas [por ejemplo, manillares] y no funciones demasiado complicadas.
moonwave99

3
Esta función es una de las primeras de mis funciones y no he pensado en actualizarla. Creo que tu idea es mejor y definitivamente la cambiaré. Gracias por eso.
Guja1501

77
Aunque tienen razón, gracias por proporcionar información adicional y formas alternativas de hacerlo. Muy perspicaz.
Fata1Err0r

15

¿Por qué no hacer esto con jQuery?

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

77
no todos pueden o quieren usar jQuery. Pero si lo fuera, podría hacer var g = $ ('<div id = "blah" class = "tclose">');
Bradley Mountford

24
@BradleyMountford: etiquetó la pregunta con jQuery. Es paseíto me sugirió una solución jQuery
Shyju

2
Aunque la especificación no prohíbe el uso de palabras clave reservadas como nombres de propiedad, podría ser mejor poner classcomillas.
Felix Kling

5
var element = document.createElement('tagname');    

element.className= "classname";
element.id= "id";

Prueba esto que quieras.


4

No estoy seguro de si está intentando establecer una ID para poder diseñarla en CSS, pero si ese es el caso, también puede intentarlo:

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

g.className= "g";

y eso nombrará tu div para que puedas apuntarlo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.