• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:リンクを新しい窓で開きたい)

外部リンクを新しい窓で開く方法

このQ&Aのポイント
  • 外部リンクを新しい窓で開くための方法を探しています。
  • ID指定を使用して外部リンクを新しい窓で開く方法を試しましたが、一つのIDしか反映されませんでした。
  • 複数のIDを指定する方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.5

> 記述方法を変えれば、複数IDを指定することが可能なのでしょうか? getElementByIdは引数を1つしか持てません。 目的を考えるとノードの数は変動するのでしょうから、配列とforの組み合わせがマッチしますが…。 var a = [ 'sample1','sample2' ], node=new Array(); for(var i=0,max=a.length; i<a; i++){ node[i] = document.getElementById(a[i]); } しかし、そもそもIDを指定する必要があるのでしょうか? 外部リンクのみ適用させたいのなら、href属性値と現ページのホスト名を照合して一致しなければ、 openWin ないし target='_blank' を付与するだけでも動きます。 実際、昔そういうスクリプトを作って動作確認までしました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.4

ID指定は出来ないのでしょうか? <a href=...>のタグに<a id='sample' href=...>とIDをつけておけば  x[i].id で取得できる。 ご提示のHTML例そのままだと、  x[i].parentNode.id で<p>タグのIDを取得できる。 そのまま直せばこうなる。 function getSrc() { var x = document.getElementsByTagName('a'); for (var i=0; i<x.length; i++) { if(x[i].parentNode.id == 'sample' || x[i].parentNode.id == 'sample2'){ x[i].onclick = function () { return openWin(this.href); } x[i].onkeypress = function () { return openWin(this.href); } } } } function openWin(target) { var win = window.open(target); return false; }

すると、全ての回答が全文表示されます。
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

(1)var x = document.getElementById('sample','sample2').getElementsByTagName('a'); じゃなくて、 (2)var x = document.getElementsByTagName('a'); です。(1)だとxにオブジェクトは1つしか入りません。

larc-en-ci
質問者

補足

回答ありがとうございます。私の記述が間違っていたのですね。 (2)の場合、ID指定は出来ないのでしょうか?例えばID1と2にのみ新窓を適用させ、3は除外…というような方法は難しいのでしょうか。

すると、全ての回答が全文表示されます。
回答No.2

JavaScriptのみでということなら・・・ 一例ですが <html> <head> <script language="JavaScript"> <!-- function OpenWin1(){win=window.open("sample1.html","new",""); } function OpenWin2(){win=window.open("sample2.html","new",""); } // --> </script> </head> <body> <a href="javascript:OpenWin1()">sample1を別窓で開く</a><br> <a href="javascirpt:OpenWin2()">sample2を別窓で開く</a><br> </body> </html>

larc-en-ci
質問者

お礼

ありがとうございました。 やはりHTMLの方にも直接書く必要があるのですね。

すると、全ての回答が全文表示されます。
回答No.1

JavaScriptを使わなくてもa hrefタグでtargetを指定することで 別窓で開くことができます。 <p> <a href="sample.html" target="_blank">サンプル1</a> </p> <p> <a href="sample2.html" target="_blank">サンプル2</a> </p>

参考URL:
http://www.htmq.com/html/a.shtml
larc-en-ci
質問者

お礼

<target="_blank">を使わずにjavascriptのみで…と記述するのを忘れていました。すみません。

すると、全ての回答が全文表示されます。

関連するQ&A