ページ内の外部リンクのみ、新窓で開きたいなと考え、『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で質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onchangeイベントを使ってspan...
-
Click回数を数え、規定された回...
-
javascript 特定のタグのidの存...
-
任意の座標をクリックさせるには
-
画像上のクリックした場所が分...
-
モーダルダイアログウィンドウ...
-
javascript初心者です。
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
同じIDで定義した要素の配列を...
-
1日1回引けるJavaScriptおみく...
-
canvas上で画像を移動する方法...
-
C# .NET DataGridView の行を追...
-
jslintのエラーについて質問
-
var_dumpのdump意味はを知りた...
-
googleスプレッドシートのApps ...
-
javascriptで文字挿入でtoggle...
-
GASでundefinedエラーが出ます
-
FireFoxのjavascriptで自動でキ...
-
LaTeX:数式を等号揃えにする方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<a>タグのテキストを取得
-
[初心者]javascriptのfor文でな...
-
ActiveXobjectが作成できない
-
任意の座標をクリックさせるには
-
appendChildがieだとできない??
-
onchangeイベントを使ってspan...
-
【Tabキー】特定の範囲内だけで...
-
モーダルダイアログウィンドウ...
-
javascript 特定のタグのidの存...
-
日本語入力の禁止
-
innerHTML実行後のイベント
-
HTML:Tableタグに対し、JavaScr...
-
onclickを使わずにイベント処理...
-
アンカークリックのイベントを...
-
javascriptでスロットゲームを...
-
画像上のクリックした場所が分...
-
javascriptでCSVを呼出しvlookup
-
javascriptで編集可能不可能の...
-
Click回数を数え、規定された回...
-
子画面からwindow.openを開いた...
おすすめ情報