プロが教えるわが家の防犯対策術!

初歩的なJavaScriptで申し訳ないのですが、ご教授願いします。

下記のプルダウンのJavaScriptで、例えばヤフーと言う部分を選択し、飛ぶをクリックするとヤフーに飛びますが、その際ヤフーにとんだページを別ウインドウで表示させたいのですが、お分かりの方いらっしゃいましたらこの素人に教えてください・・

<HTML>
<HEAD>
<script language="javascript">
<!--
function navi(obj) {
url = obj.options[obj.selectedIndex].value;
if(url != "") {
location.href = url;
}
}
//-->
</script>
</HEAD>
<BODY>
<form method=post>
<select name="navi" size="10" "abc" onChange="document.b.submit()">
<option value="http://www.yahoo.co.jp/">ヤフー
</select>
<input type=button value="飛ぶ"
onClick="location.href = this.form.navi.options[this.form.navi.selectedIndex].value">
</form>
</BODY>
</HTML>

A 回答 (3件)

No.2の方が書いてあるとおり、onChange="document.b.submit()"が余分なのと、



<input type=button value="飛ぶ"
onClick="location.href = this.form.navi.options[this.form.navi.selectedIndex].value">
のところで、
"location.href = this.form.navi.options[this.form.navi.selectedIndex].value"
となっていることが原因です。

正しくは
<input type=button value="飛ぶ"
onClick="window.open(this.form.navi.options[this.form.navi.selectedIndex].value)">
とすることで別ウィンドウで開くようになります。
そうすると、上部で宣言されてる関数はいらなくなってしまいますね(^^;

どうしても関数で処理させたい場合は、
<input type=button value="飛ぶ"
onClick="location.href = this.form.navi.options[this.form.navi.selectedIndex].value">

onClick="location.href = this.form.navi.options[this.form.navi.selectedIndex].value"
となっているところを
onClick="navi(this.form.navi)"のようにして、
関数内の
location.href = url;
というところを
window.open(url);
のようにしてあげれば動くと思います。

ただそうする場合、関数名「navi」がセレクトボックスの名前と被っているので違う名前に変えてあげないと動かないと思います。
    • good
    • 0

onChange="document.b.submit()" が原因。

    • good
    • 0

location.href = url;


の行を、
window.open(url);

ってことでしょうか?

この回答への補足

回答ありがとうございます。window.open(url);で普通は別ウインドウで飛ぶはずなのですが、それに書き換えても同ウインドウのまま開きます・・

補足日時:2009/05/08 23:22
    • good
    • 0

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