/ / changer un lien dans javascript - javascript

changer un lien dans javascript - javascript

J'ai une question à propos de la modification du lien dans une balise d'ancrage à partir d'une fonction. Les 2 premiers bits du code fonctionnent, mais pas le dernier. Pourquoi est-ce?

var anchor = document.getElementById("myAnchor").href = "http://www.newgrounds.com";

var anchor = document.getElementById("myAnchor");
anchor.href = "http://www.newgrounds.com";

var anchor = document.getElementById("myAnchor").href;
anchor = "http://www.newgrounds.com";

Réponses:

1 pour la réponse № 1

C’est parce que vous ne faites que modifier la valeur de la variable qui est une chaîne, vous ne devez pas la définir pour l’élément. Vous devrez utiliser un pointeur pour cela.


1 pour la réponse № 2

Le dernier anchor pointe sur une chaîne, pas sur le nœud réel. Les deux premiers pointent vers le nœud.

#1

"http://www.newgrounds.com"
├── assigning to ───── document.getElementById("myAnchor").href
└── assigning to ───── anchor

#2 anchor ---------------> HTMLAnchorElement        (Object)

#3 anchor ---------------> "http://www.example.com" (String)

1 pour la réponse № 3

Parce que le anchor variable dans votre code est un string et vous le référez comme s'il s'agissait d'un pointeur.

Voici votre problème:

var anchor = document.getElementById("myAnchor").href = "http://www.newgrounds.com";

0 pour la réponse № 4

Parce que dans l’avant-dernière ligne, l’ancre contient la href.

Alors anchor = "some url";

Donc, changer la valeur d'une variable chaîne ne changera pas le href.

Vous pouvez le faire à la place:

var anchor = document.getElementById("myAnchor").href;
anchor = "http://www.newgrounds.com";
document.getElementById("myAnchor").href = anchor;

Les autres travaillaient parce qu'ils étaient des pointeurs, mais le dernier était une chaîne.


0 pour la réponse № 5

Dans la dernière déclaration, anchor est une chaîne, pas une référence.

Vous attribuez une référence de anchor élément

 var anchor = document.getElementById("myAnchor"); // Reference to anchor element
anchor.href = "http://www.newgrounds.com";

Vous obtenez une valeur de href élément et affecter à une autre variable.

 // Value of href element, not an reference
var anchor = document.getElementById("myAnchor").href;
anchor = "http://www.newgrounds.com";