この人頭いいなと思ったエピソード

Javascriptで、URLのパラメータを取得し、リンクにパラメータを渡したいです。

例えば、現在のURLが、
http://www.hogehoge.com/hoge.php?page=hoge1だとします。

そのページに、様々なリンクがあるとします。
<リンク例>
http://www.hogehoge.com/moge/moge.php
http://www.hogehoge.com/boge/boge.php
http://www.yahoo.co.jp/auctionxx.html

このうち、/moge/以下のページへのリンクにのみ、自動で現在のURLのパラメータを渡したリンクにしたいです。
つまり、
http://www.hogehoge.com/moge/moge.php

http://www.hogehoge.com/moge/moge.php?page=hoge1
というリンクにしたいです。
当然現在のURLにパラメータが存在しない場合は、そのままのリンクになります。
また、他のディレクトリや他のドメインのサイトにはパラメータを渡さず、変更せずにそのままのURLのリンクにしたいです。

<リンク例>
http://www.hogehoge.com/moge/moge.php ○変更
http://www.hogehoge.com/boge/boge.php ×変更なし
http://www.yahoo.co.jp/auctionxx.html ×変更なし

よろしくお願いします。

A 回答 (3件)

> 同一ページ内全てのリンクを判別し、全ての対象の各リンクへ自動的にクエリ文字列を渡す方法をお聞きしたいです。


そういう仕様に作っていますが……。
#2のコードは試されましたか?

ページの<head>タグ内あたりに入れてみてください。
<script type="text/javascript">
<!--
window.addEventListner("load",function(){
//#2のコード
});
//-->
</script>
    • good
    • 1

var anchorList = document.getElementsByTagName("a"); //アンカーを列挙


var targetURL = location.protocol + "//" + location.host + "/moge/"; //判別するための比較対象

for (var i = 0; i < anchorList.length; i++){
 if(anchorList[i].href.startsWith(targetURL)){ //リンク先URLがtargetURLで始まる場合
  anchorList[i].href += location.search; //現在のURLの「?」以降を追加
 }
}


リンク先URLに既にクエリ文字列がついていた場合のことは考慮していません。
必要に応じて修正してください。

参考URL:https://developer.mozilla.org/ja/docs/Web/API/wi …

この回答への補足

ありがとうございます。

同一ページ内全てのリンクを判別し、全ての対象の各リンクへ自動的にクエリ文字列を渡す方法をお聞きしたいです。

説明不足で何度もすみませんが、よろしくお願いします。

補足日時:2014/01/21 22:17
    • good
    • 1

やりたいことはわかりましたが……


ご質問は何でしょう?

ちなみに、現在のURLのクエリ文字列を取得するのは
 location.search
でできます。

この回答への補足

失礼しました。

質問は、やりたいことをどういうコードを書けばいいか、ということで、コードの例を書いて教えて頂きたいです。

取得についてはヒントをありがとうございます。
取得後どのように、各リンクを判別して、必要なリンクにはパラメータをつければよいでしょうか?

よろしくお願いします。

補足日時:2014/01/20 16:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!