¿Cómo puedo agregar el href
atributo a un enlace dinámicamente usando JavaScript?
Básicamente, quiero agregar un href
atributo de <a></a>
forma dinámica (es decir, cuando el usuario hace clic en una imagen específica en el sitio web).
Entonces de:
<a>Link</a>
Necesito irme:
<a href="somelink url">Link</a>
javascript
html
Pavel
fuente
fuente
setAttribute
). ¿Alguien sabe si este enfoque es estándar?HTMLLinkElement
que se admite la configuración de ciertos campos comohref
. Tienes que mirar en la referencia para ver cuál puedes usar sin tener que hacerlosetAttribute
. Otro ejemplo es el<table>
elemento ( HTMLTableElement ) donde puede usarinsertRow()
para insertar nuevas filas sin tener que crear el<tr>
y agregarlo a la tabla.setAttribute()
ygetAttribute()
, que están rotas en IE y no siempre hacen lo que podría esperar. Ver stackoverflow.com/questions/4456231/…Supongo que sabe cómo obtener el objeto DOM para el
<a>
elemento (usedocument.getElementById
o algún otro método).Para agregar cualquier atributo, simplemente use el método setAttribute en el objeto DOM:
a = document.getElementById(...); a.setAttribute("href", "somelink url");
fuente
setAttribute
es claramente el estándar ( w3.org/TR/DOM-Level-2-Core/core.html#ID-F68F082 ), y el W3C no define ningún atributo para el que no funcione. Por el contrario, puedo garantizar que el uso de la propiedad fallará para ciertos nombres de atributos. Tales comotagName
, ysetAttribute
- esos ya son campos / métodos de la interfaz Element. No veo en ningún lugar del documento W3C que mencione propiedades para atributos.tagName
. ¿Estás hablando de atributos personalizados?getAttribute
ysetAttribute
;"tagName"
es un ejemplo de un atributo que no puede funcionar como propiedad. Solo cuando se trabaja con HTML, y para ciertos atributos definidos en la especificación DOM HTML, puede usar las propiedades para leer y asignar atributos.tagName
es una propiedad de losElement
objetos en JavaScript, tanto en HTML como XML DOM, y no puede obtener el nombre de la etiqueta de un elemento a través degetAttribute("tagName")
(excepto en IE, cuya implementación degetAttribute()
ysetAttribute()
está rota), que parece precisamente lo contrario de lo que está diciendo.Primero, intente cambiar
<a>Link</a>
a<span id=test><a>Link</a></span>
.Luego, agregue algo como esto en la función javascript que está llamando:
var abc = 'somelink'; document.getElementById('test').innerHTML = '<a href="' + abc + '">Link</a>';
De esta forma, el enlace se verá así:
<a href="somelink">Link</a>
fuente
href
a una etiqueta existentea
( básicamente quiero agregar un atributo href a <a> </a> dinámicamente ). Sin embargo, esta respuesta parece explicar cómo crear unaa
etiqueta con una extensiónhref
.document.getElementById('link-id').href = "new-href";
Sé que esta es una publicación antigua, pero aquí hay una frase que podría ser más adecuada para algunas personas.
fuente