2016-11-30 6 views
1

私がミスを犯し、私が書いていたいくつかのコードでは、属性値を使用することを忘れていました:このhref 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

ええ、これは意味をなさない。パス名*を使用する前にhref属性をターゲットにしていますか?あなたは最初の行でそれをどこでやっていますか? – BenM

答えて

5

あなたは文字列にアンカー要素を変換すると、あなたが実際にhref値を取得、またはより正確に「全体のURL」、およびないouterHTMLあなたが他のほとんどのと同じようにそれは

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()

に指定されているが、全URLを含むUSVString を返します。
URLUtils.hrefの同義語ですが、値の変更には使用できません。

+1

あなたは正しい答えを出すために実際の質問をどのように考えたのですか? – JonSG

+0

私は混乱のためお詫び申し上げます、あなたはそれをよりよく説明できる場合は、質問を編集することを歓迎します。 これはかなりきれいです!ありがとう – jfox

関連する問題