
ページ内の外部リンクのみ、新窓で開きたいなと考え、『javascript 新窓』で検索した際に見つけた方法にID指定というものがありました。試してみたところ、一つ目のIDしか反映されませんでした。記述方法を変えれば、複数IDを指定することが可能なのでしょうか?
ご指南お願い致します。
#HTML例 ######################
<p id="sample">
<a href="sample.html">サンプル1</a>
</p>
<p id="sample2">
<a href="sample2.html">サンプル2</a>
</p>
#script記述例 ######################
window.onload = getSrc;
function getSrc() {
var x = document.getElementById('sample','sample2').getElementsByTagName('a');
for (var i=0; i<x.length; i++)
{
x[i].onclick = function () { return openWin(this.href); }
x[i].onkeypress = function () { return openWin(this.href); }
}
}
function openWin(target) {
open(target);
return false;
}
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' を付与するだけでも動きます。
実際、昔そういうスクリプトを作って動作確認までしました。
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;
}
No.3
- 回答日時:
(1)var x = document.getElementById('sample','sample2').getElementsByTagName('a');
じゃなくて、
(2)var x = document.getElementsByTagName('a');
です。(1)だとxにオブジェクトは1つしか入りません。
この回答への補足
回答ありがとうございます。私の記述が間違っていたのですね。
(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>
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascript の 命令文の記述で...
-
javascriptを使ったページ内の...
-
onclickを使わずにイベント処理...
-
appendChildがieだとできない??
-
onchangeイベントを使ってspan...
-
重複しないくじの作り方がわか...
-
ActiveXobjectが作成できない
-
jspからjavascriptの変数引継ぎ
-
C#OpenCv V4にのエラーに関する...
-
四肢麻痺の娘のパソコンの使い方
-
GASでundefinedエラーが出ます
-
Excel VBA の ChangeFileAccess
-
Perlの配列をJavaScriptに渡せ...
-
ローカルにあるファイルを検索...
-
複数のxmlを同ページに読み込み...
-
(ホームページ作成ソフトウェ...
-
問題の個数を数える。
-
HTTPSのとき":"が"%3A"ではなく...
-
Null またはオブジェクトではあ...
-
クリックすると上に開くアコー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ActiveXobjectが作成できない
-
<a>タグのテキストを取得
-
onchangeイベントを使ってspan...
-
appendChildがieだとできない??
-
innerHTML実行後のイベント
-
RadioButtonListの表示制御
-
onclickとonkeypressの重複
-
【Tabキー】特定の範囲内だけで...
-
javascript 特定のタグのidの存...
-
javascriptで編集可能不可能の...
-
配列の大括弧と丸括弧はどう違う?
-
画像上のクリックした場所が分...
-
WordPressのコンタクトフォーム...
-
div要素内の全input要素をdisable
-
IE8でdivのcontenteditable=tru...
-
「nullまたはオブジェクトでは...
-
問題はbind の付いたリスナーを...
-
画像の一部を表示
-
日本語入力の禁止
-
javascriptでCSVを呼出しvlookup
おすすめ情報