Creé una función para escribir tantos atributos como necesite, pero solo el primer atributo está configurado con él y no considera el resto. El primer atributo es un conjunto de clases, pero el segundo atributo, ...

1
Amir93 15 mar. 2021 a las 08:04

1 respuesta

La mejor respuesta

this.setAttribute debe ser una función simple (no asigne a una variable independiente setAttribute) que devuelva this al final para que pueda encadenar llamadas .setAttribute.

También recomiendo encarecidamente cambiar el nombre de this.tagName a algo como this.element; la mayoría esperará que tagName sea una cadena , no el elemento o la etiqueta en sí.

El appendTag es el mismo elemento agregado, por lo que también se puede eliminar por completo.

function CreateTag(tagName, idTag, text) {
  this.element = document.createElement(tagName);
  document.getElementById(idTag).append(this.element);
  this.element.innerHTML = text;
  this.setAttribute = (attribute, valueAttribute) => {
    this.element.setAttribute(attribute, valueAttribute)
    return this;
  };
}

const newTag = new CreateTag("div", "container", 'hello')
  .setAttribute("class", "one")
  .setAttribute("id", "two")
#container {
  background: yellow;
  padding: 1rem;
  width: 100%;
  height: 100vh;
}

.one {
  width: 250px;
  height: 5rem;
  background-color: red;
}

#two {
  color: white;
}
<div id="container"></div>
0
CertainPerformance 15 mar. 2021 a las 05:06