我有一个关于从函数内部更改锚标记中的链接的问题。前两位代码有效,但最后一位没有。这是为什么?
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";
答案 0 :(得分:1)
因为代码中的anchor
变量是string
,并且您将其称为指针。
这是你的问题:
var anchor = document.getElementById('myAnchor').href = "http://www.newgrounds.com";
答案 1 :(得分:1)
最后anchor
指向String,而不指向实际节点。前两个指向节点。
#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)
答案 2 :(得分:1)
那是因为你只是编辑变量的值,这是一个字符串,你还没有将它设置为元素。您将不得不使用指针
答案 3 :(得分:0)
因为在前到后一行中,锚点包含实际的href
。
所以anchor = "some url";
因此,更改字符串变量的值不会更改href。
您可以这样做:
var anchor = document.getElementById('myAnchor').href;
anchor = "http://www.newgrounds.com";
document.getElementById('myAnchor').href = anchor;
其他人工作是因为他们是指针,但最后一个是字符串。
答案 4 :(得分:0)
在最后一个语句中,anchor
是一个字符串,而不是引用。
您正在指定anchor
元素
var anchor = document.getElementById('myAnchor'); // Reference to anchor element
anchor.href = "http://www.newgrounds.com";
您获得href
元素的值并分配给另一个变量。
// Value of href element, not an reference
var anchor = document.getElementById('myAnchor').href;
anchor = "http://www.newgrounds.com";