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

<script language="JavaScript">
function fa(obja){
if(confirm())obja.href="a.html"
else{obja.href=eval("javascript:void(0)")
inp.value=0//↑がうまくいかない。hrefを無効にしたい。
}
}
function fb(objb){
if(confirm())window.location="a.html"
else{inp.value=0//↑がvoiv(0)によって無効で動作しない。
}
}
</script>
<a href=a.html>りんく</a><a href=javascript:voiv(0) onClick=inp.value=0>ばりゅ</a>
<br>↑と同じようなことを1つのaタグでやりたい<br>
<a href="" onClick=fa(this)>失敗A</a><br>
<a href=javascript:voiv(0) onClick=fb(this)>失敗B</a><br>
<input id=inp>

選択によってクリックのアクションを変更したいんだけど、
1方のアクションはリンク、もう1方はJavaScriptです。
ボタンとかならできるんだけど、クリック済みかを
色分けしたいからaタグでやりたいんです。
よい方法を教えてください。

A 回答 (1件)

こんにちは。


問いの内容が掴みづらいですが、確認します。
「選択」とは、ダイアログで「OK」を選択したのか「キャンセル」を選択したのかという意味でよいですか。
 A__さんが添付したソースを注意深くみれば、そうだと思いますが、言われた瞬間では、「選択」というとラジオボタン(<input type="radio">)やプルダウンメニュー(<select>)の方が連想しやすいので。
で、どちらを押したかによって、ページをジャンプするか、ジャンプしないでJavaScriptを実行するか分岐するでいいのですか。そうであれば以下のサンプルはいかがでしょうか。

<html>
<head>
<script language="JavaScript">
function func()
{
  if(confirm("OKWEBに行きますか?"))
  {
     return true ;
  }
  var txt = document.formForJS.textForJS;
  txt.value="行きたくありません";
  return false ;
}
</script>
</head>
<body>
  <a href="http://www.okweb.ne.jp/" onclick="return func()">リンク</a>
  <form name="formForJS">
    <input type="text" name="textForJS" size="20" />
  </form>
</body>
</html>

ここでのポイントは、<a>タグのonclickにreturnをつけていること、あわせて、呼んでいる関数でtrue/falseを戻している(returnしている)ことです。
<a>タグのonclickがある場合、trueが戻ってきた場合は、本来のhrefで指定したURLにジャンプします。逆にfalseが戻ってきた場合は、ジャンプせず現在表示しているページのままでいます。
よって、関数内ではダイアログで「OK」が押されたらtrueを戻して終了、リンクジャンプさせます。一方、「キャンセル」が押されたらお好みのJavaScriptプログラムを起動させ、最後にfalseを戻して、ジャンプさせないようにします。
    • good
    • 0
この回答へのお礼

onclickにreturnをつければよかったんですね。
hrefを無効にできました。
ありがとうございます。

お礼日時:2001/10/27 20:33

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