
JavaScript初心者です・・・。困っています。。
ご存知の方いらっしゃいましたらどうかご教示いただきたいです。
表示されているページによって、aタグ内のリンク先を動的に変更させたいと思っています。
■html
<div>
<a href="">英語リンク</a>
</div>
■条件
1.表示されているページが下記の場合、hrefに /en/aaa/ を入れたい
/china/aaa/
/china/aaa/bbb.html
2.表示されているページが下記の場合、hrefに /en/ccc/を入れたい
/china/ccc/
/china/ddd.html
上記のような条件だけではなく、対応するURLは条件が細かく別れているので、JSONファイルで管理してほしいと言われております。
下記のようにJSONファイル内で羅列し、JavaScriptで出したいのですが、どのように処理していいかわからず行き詰っています。
{
"urllist": {
"current": "/china/aaa/",
"link": "/en/aaa"
}
}
分かる方がいらっしゃいましたらお力お貸しいただけないでしょうか・・。。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
とりあえず、javascriptで書いたらこんな感じでできると思います。
条件に関して詳しく記載されていないので、JSON部分に条件となる項目を追加し
ループ内で条件比較を追加すればいいかと。
以下、インデントを全角空白にしているので半角空白に変更してください。
また、一部の「"」(半角)を「”」(全角)にしているので半角にしてください。
// javascript部
<script type="text/javascript">
window.onload = function () {
var json = [
{ "current":”http://localhost/china/aaa/”,
"link" :"/en/aaa/"},
{ "current":”http://localhost/china/aaa/bbb.html”,
"link" :"/en/aaa/"},
{ "current":”http://localhost/china/ccc/”,
"link" :"/en/ccc/"},
{ "current":”http://localhost/china/ddd.html”,
"link" :"/en/ccc/"}
]
for( var i in json ){
if( json[i].current == window.location.href ){
var element = document.getElementById( "nlink" ) ;
element.href = json[i].link;
break;
}
}
}
</script>
// アンカー部
<div>
<a id="nlink" href=”http://www.google.co.jp”>英語リンク</a>
</div>
上記では、JSONの配列をfor in ループで回し
現在のURL(window.location.hrefにて取得)とJSONの"current"を比較し
一致する場合、アンカーのhrefを変更しています。
あと、アンカーが読み込まれた後で実行しないといけないので、onload時に
実行する形にしています。
お返事遅れて申し訳ありません!
教えていただいたソースを基に、試行錯誤した結果無事に思い通りの動きになりました・・・
本当にありがとうございました!!助かりました。
是非また機会がございましたら教えて下さい。
No.2
- 回答日時:
こんにちは
ご質問のような処理は、内容的にはjavascriptで可能と思いますが、利用するシチュエーションが良くわかりません。
>表示されているページによって、aタグ内のリンク先を動的に変更させたい
「ページによってリンク先を変えたい」というのであれば、そのページを出力する時点で処理しておくのが本来と思います。
何らかのプログラムから出力しているのであればそちらで、単なるhtmlファイルであればその文書内で指定しておけば済むことですので。
・・・というだけでは回答にならないので、
>どのように処理していいかわからず行き詰っています。
どうしてもスクリプトで行う必要があるのでしたら、おおむね以下のような方法で実現可能だと思います。
1)表示ページのurlはlocation.hrefなどで参照できます。
https://developer.mozilla.org/ja/docs/Web/API/Wi …
2)url等は基本的に文字列ですので、指定した内容がその中に存在するかは正規表現やindexOf()メソッドを利用することでチェックが可能です。
ただし、単に含まれる/含まれないだけのチェックでよいのか、何階層目であるかなども含めてチェックするのかによって、具体的な判断の方法は変わってくるでしょう。
https://developer.mozilla.org/ja/docs/Web/JavaSc …
https://developer.mozilla.org/ja/docs/Web/JavaSc …
3)上記のチェックはjsonの各keyに対して順に行うことになると思いますが、for~inの構文でループさせたり、keys()を利用してチェックを行えば宜しいかと。
https://developer.mozilla.org/ja/docs/Web/JavaSc …
https://developer.mozilla.org/ja/docs/Web/JavaSc …
4)一致した場合は、対象とする要素のhref属性を書き換えれば終了。
要素の取得や属性の書き換えがわからない場合は、DOMの操作について学習してください。
http://qiita.com/kouh/items/dfc14d25ccb4e50afe89
http://javascriptist.net/docs/samples_dom.html
お返事遅れて申し訳ありません!
MTでテンプレート管理している部分なので、html個別にはhrefを設定できない状況でした。
教えていただいた情報でいろいろ試してみたところ、無事に思い通りの動きになりました。本当にありがとうございました!!助かりました・・・
もっと勉強して理解を深めたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急お願いします!javascript:...
-
リンクからPOST送信を、右クリ...
-
フォルダを自動で開く
-
URLのアンカーをCGIに渡したい
-
ホームページ 専用ページ 直リ...
-
ウィンドウを閉じたら、アラー...
-
リンクを右クリックするとペー...
-
VB.NET2003 テキストボックスに...
-
C#でボタン名を変更しても動く
-
if(1){...}とはどういうことで...
-
JSPの処理の途中で、JavaScript...
-
JavaScriptでデータファイル読...
-
既存のwebサイトで、ローカルの...
-
javascript で外部サイトにデー...
-
禁止文字チェック
-
VBA ステータスバー DoEvents
-
チェックボックスを利用した見...
-
デザイン時のVisible=Falseは実...
-
1つのVBAコードをすべてのコア...
-
〔Excel:VBA〕マクロの実行が異...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダを自動で開く
-
ページ遷移時にアコーディオン...
-
表示ページによって、aタグ内の...
-
ホームページ 専用ページ 直リ...
-
chomeでリンク先URLを取得したい
-
自作のJavaScriptを既存のペー...
-
リンクを右クリックするとペー...
-
リンクからPOST送信を、右クリ...
-
VB.NETからWEBブラウザの操作に...
-
PHPを使って作成したボタンをク...
-
至急お願いします!javascript:...
-
画像をダイアログボックスで表...
-
javascriptでポップアップした...
-
C#の質問です。
-
「記事の折りたたみ・展開」に...
-
「google apps script」情報取...
-
URLのアンカーをCGIに渡したい
-
SVGでダブルクリックされた時に...
-
ブックマーク拒否について
-
Javascriptが開けません。
おすすめ情報