这个href javascript逻辑是如何工作的?

时间:2016-11-30 20:59:42

标签: javascript

我犯了一个错误,忘了在我写的一些代码中使用属性值:

<a href="http://somesite.org/test-link/1" class="summary-title-link"></a>

var link = document.getElementsByClassName("summary-title-link")[0],
    ele = document.createElement("a");
ele.href = link;

我很惊讶地看到它仍然有效。

<a href="http://somesite.org/test-link/1"></a>

在下面这个例子的扩展中,我发现在使用路径名之前我不需要定位href属性很奇怪?它似乎假设我想要href属性的路径名。

var link = document.getElementsByClassName("summary-title-link")[0].pathname;

"/test-link/1"

1 个答案:

答案 0 :(得分:5)

当你将一个锚元素转换为一个字符串时,你实际上得到的是href值,或者更确切地说是“整个网址”,而不是像大多数其他人一样得到的外部HTML元素,这就是它工作的原因

var href = document.getElementsByClassName("test")[0]; // DOM element

console.log(href.toString()); // gives you "http://google.com"
<a class="test" href="http://google.com">link</a>

锚点的这种特殊行为在specification

中指定
  

<强> HTMLHyperlinkElementUtils.toString()

     

返回包含整个网址的USVString   它是URLUtils.href的同义词,但不能用于修改值。