127 votes

Comment ajouter l'attribut "href" à un lien de manière dynamique en utilisant JavaScript ?

Comment puis-je ajouter le href à un lien de façon dynamique en utilisant JavaScript ?

Je veux essentiellement ajouter un href à l'attribut <a></a> dynamiquement (c'est-à-dire lorsque l'utilisateur clique sur une image spécifique du site web).

Donc de :

<a>Link</a>

Je dois y aller :

<a href="somelink url">Link</a>

226voto

stecb Points 7663
var a = document.getElementById('yourlinkId'); //or grab it by tagname etc
a.href = "somelink url"

0 votes

Intéressant. Je ne savais pas que vous pouviez accéder directement aux attributs en tant que champs (comparez avec ma solution ci-dessous, qui utilise setAttribute ). Quelqu'un sait-il si cette approche est standard ?

0 votes

Je pense que sur un élément DOM, href est un attribut que vous pouvez définir directement par el.href. Au lieu de cela, setAttribute(el,attr) est utilisé pour ajouter des attributs personnalisés à un élément DOM particulier, donc dans ce cas il n'y a pas besoin de l'utiliser pour définir un attr. std.

0 votes

Mais sont les deux voies correcto ? Je ne cherche pas à critiquer la réponse, elle est peut-être correcte. Mais sur le web, il ne suffit pas d'obtenir quelque chose qui fonctionne pour vous. Il faut qu'il fonctionne dans tous les navigateurs, ce qui signifie que vous devez respecter les normes. Pour info, cela fonctionne pour moi aussi (dans Firefox), mais j'aimerais savoir s'il s'agit d'une façon standard de procéder. La spécification DOM du W3C ( w3.org/TR/DOM-Niveau-2-Core/core.html ) ne semble pas le mentionner.

35voto

mgiuca Points 10265

Je suppose que vous savez comment obtenir l'objet DOM pour l'objet <a> (utiliser document.getElementById ou une autre méthode).

Pour ajouter un attribut, il suffit d'utiliser l'option setAttribute sur l'objet DOM :

a = document.getElementById(...);
a.setAttribute("href", "somelink url");

1 votes

Pal, setattribute est assez peu standard pour modifier les attributs. Pour accéder ou modifier les valeurs actuelles, vous devez utiliser les propriétés. Par exemple, utilisez elt.value au lieu de elt.setAttribute('value', val). developer.mozilla.org/fr/DOM/element.setAttribute#Notes

1 votes

@naveen Il est écrit "most notably in XUL", ce qui n'est vraisemblablement pas le cas. Je ne suis pas sûr des autres valeurs auxquelles il fait référence ("certains attributs" est très vague), mais setAttribute est clairement la norme ( w3.org/TR/DOM-Niveau-2-Core/core.html#ID-F68F082 ), et le W3C ne définit aucun attribut pour lequel elle ne fonctionne pas. À l'inverse, je peux garantir que l'utilisation de la propriété échouera pour certains noms d'attributs. Par exemple tagName y setAttribute -- ce sont déjà des champs/méthodes de l'interface Element. Je ne vois nulle part dans le document du W3C qui mentionne des propriétés pour les attributs.

1 votes

@mgiuca : Il semble que vous ayez trouvé la spécification pertinente après avoir posté ce dernier commentaire. Je ne comprends pas votre point de vue sur les propriétés qui échouent, et ensuite vous mentionnez tagName . Parlez-vous des attributs personnalisés ?

8voto

document.getElementById('link-id').href = "new-href";

Je sais que c'est un vieux message, mais voici une phrase qui pourrait convenir à certaines personnes.

7voto

Rahul Sudha Points 39

D'abord, essayez de changer <a>Link</a> à <span id=test><a>Link</a></span> .

Ensuite, ajoutez quelque chose comme ceci dans la fonction javascript que vous appelez :

var abc = 'somelink';
document.getElementById('test').innerHTML = '<a href="' + abc + '">Link</a>';

De cette façon, le lien ressemblera à ceci :

<a href="somelink">Link</a>

0 votes

Bonjour, bienvenue sur Stackoverflow. La question de l'OP semble être la suivante : comment ajouter un fichier href à un existant a tag ( Je veux essentiellement ajouter un attribut href à <a></a> dynamiquement. ). Cependant, cette réponse semble expliquer comment créer un a avec une balise href .

0 votes

@MoisheLipsker Ça marche toujours. Même si cela détruit l'original, cela permet d'une certaine manière de "fixer" le href. Cependant, elle n'est pas pratique car elle ne conserve pas le lien précédent sans le détruire, ce qui peut potentiellement détruire d'autres attributs et informations.

5voto

Seldo97 Points 425

Une solution plus réelle :

<a id="someId">Link</a>

const a = document.querySelector('#someId');
a.href = 'url';

3 votes

Enfin, quelqu'un qui utilise querySelector

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X