El método setAttribute() agrega el atributo especificado a un elemento y le da el valor especificado. Si el atributo especificado ya existe, solo se establece / cambia el valor.
Nota: Aunque es posible agregar el atributo de estilo con un valor a un elemento con este método, se recomienda que utilice las propiedades del objeto de estilo en su lugar para el estilo en línea, ya que esto no sobrescribirá otras propiedades de CSS que se pueden especificar en el atributo de estilo.
Sintaxis
Element.setAttribute(name, value);
Parámetros
Dado que value se convierte en una cadena de texto, indicando null no necesariamente hace lo que se espera. En lugar de eliminar el atributo o establecer su valor para ser null, establece el valor del atributo a la cadena de texto "null". Si se desea eliminar un atributo, se debe llamar a removeAttribute().
<!DOCTYPE html>
<html>
<head>
<style>
.democlass {
color: red;
}
</style>
</head>
<body>
<h1>Hola Mundo</h1>
<p>Haga click en el botón para agregar un atributo de clase con el valor de "democlass" al elemento h1.</p>
<button onclick="myFunction()">Probar</button>
<script>
function myFunction() {
document.getElementsByTagName("H1")[0].setAttribute("class", "democlass");
}
</script>
</body>
</html>
Hay muchas marcas HTML que pueden tener definidos atributos. Muchos de estos son casi obligatorios para su funcionamiento. Imaginemos la marca HTML <a> , si no definimos el atributo href con la dirección del sitio poco sentido tendrá incluirla en la página.
Veamos con un ejemplo como proceder a definir un atributo a un nodo de tipo elemento:
<!DOCTYPE html>
<html>
<head>
<title>Problema</title>
<script>
function crearElementoyAtributo()
{
var elemento=document.createElement('a');
var puntero=document.getElementById('direccion');
puntero.appendChild(elemento);
nodotexto=document.createTextNode('google');
elemento.appendChild(nodotexto);
elemento.setAttribute('href','http://www.google.com.ar');
}
</script>
</head>
<body>
<input type="button" value="Crear nodo tipo elemento y definir el atributo href" onClick="crearElementoyAtributo()">
<div id="direccion">
</div>
</body>
</html>
El código javascript :
function crearElementoyAtributo() { var elemento=document.createElement('a'); var puntero=document.getElementById('direccion'); puntero.appendChild(elemento); nodotexto=document.createTextNode('google'); elemento.appendChild(nodotexto); elemento.setAttribute('href','http://www.google.com.ar'); }
Como funciona:
Creamos un nodo de tipo elemento:
elemento=document.createElement('a');Obtenemos una referencia al div llamado direccion:
var puntero=document.getElementById('direccion');
Añadimos el nodo de tipo elemento al div:
puntero.appendChild(elemento);
Creamos un nodo de texto:
nodotexto=document.createTextNode('google');
Ahora añadimos el nodo de texto al nodo de tipo elemento que acabamos de crear:
elemento.appendChild(nodotexto);
Por último y lo nuevo, es definir el atributo href al ancla que acabamos de crear:
elemento.setAttribute('href','http://www.google.com.ar');
El primer parámetro es el nombre de la propiedad (en este caso href) y el segundo es el valor que toma la propiedad.