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 № 1C’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";