アプリ版:「スタンプのみでお礼する」機能のリリースについて

ページ内の外部リンクのみ、新窓で開きたいなと考え、『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;
}

A 回答 (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' を付与するだけでも動きます。
実際、昔そういうスクリプトを作って動作確認までしました。
    • good
    • 0

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;
}
    • good
    • 0

(1)var x = document.getElementById('sample','sample2').getElementsByTagName('a');


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

この回答への補足

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

補足日時:2009/04/30 16:16
    • good
    • 0

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>
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/30 16:16

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/30 11:10

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