ローカルhref値を持つアンカータグと、href値を使用するが通常は少し異なる場所にリダイレクトするJavaScript関数があります。タグは次のようになります
<a onclick="return follow(this);" href="sec/IF00.html"></a>
そして、次のようなJavaScript関数
baseURL = 'http://www.someotherdomain.com/';
function follow(item) {
location.href = baseURL + item.href;
}
item.href
は「sec/IF00.html」の短い文字列を返すだけですが、代わりに完全なhref、「http://www.thecurrentdomain.com/sec/IF00.html」を返します。アンカー<a>
タグに入れた短いhrefだけを引き出す方法はありますか?または、自然なHTMLの動作によってそれを失いますか?
文字列操作を使用してこれを行うことができると思いますが、ローカルページが実際に「http://www.thecurrentdomain.com/somedir/somepath/sec/IF00.html」であり、hrefフィールドがまたはサブディレクトリが含まれていない場合があります(たとえば、href="page.html"
対href="sub/page.html"
)。したがって、最後のスラッシュの前にあるすべてのものを常に削除することはできません。
なぜ私がこれを要求しているのか疑問に思うかもしれませんが、それは単にページをずっときれいにするからです。 (アンカー<a>
タグに入れて)短いhrefだけを取得できない場合は、おそらくlink="sec/IF00.html"
のような追加フィールドをタグに挿入することもできますが、これも少し面倒です。
以下のコードは、アンカーが指す完全なパスを取得します。
document.getElementById("aaa").href; // http://example.com/sec/IF00.html
一方、以下のものはhref
属性の値を取得します:
document.getElementById("aaa").getAttribute("href"); // sec/IF00.html
document.getElementById("link").getAttribute("href");
複数の<a>
タグがある場合、例えば:
<ul>
<li>
<a href="1"></a>
</li>
<li>
<a href="2"></a>
</li>
<li>
<a href="3"></a>
</li>
</ul>
次のようにできます:document.getElementById("link")[0].getAttribute("href");
は、<a>
タグの最初の配列にアクセスするか、作成する条件に依存します。
このコードは、ドキュメントのすべてのリンクを取得するのに役立ちます
var links=document.getElementsByTagName('a'), hrefs = [];
for (var i = 0; i<links.length; i++)
{
hrefs.Push(links[i].href);
}
Hrefプロパティは、リンクのhref属性の値を設定または返します。
var hello = domains[i].getElementsByTagName('a')[0].getAttribute('href');
var url="https://www.google.com/";
console.log( url+hello);