<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タグでやりたいんです。
よい方法を教えてください。

このQ&Aに関連する最新のQ&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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qvoid **(char や intのアドレス混在)について

printf("%d",voidd[0]);にてほしい値が表示されません。
どうすればいいですか?
よろしくお願いします。
#include<stdio.h>
int main()
{
/*
Calc.StringExpressionGet("1+((2+34)*2-111*77)*5-67*8/90");
Calc.StringExpressionResolve();
Calc.Print();
*/
int num[3];
num[0]=111;
num[1]=222;
num[2]=333;
char str[4]="ABC";
void **voidd;
voidd=new void*[6];
voidd[0]=(void *)&num[0];
voidd[1]=(void *)&str[0];
voidd[2]=(void *)&num[1];
voidd[3]=(void *)&str[1];
voidd[4]=(void *)&num[2];
voidd[5]=(void *)&str[2];
printf("%d",voidd[0]);
getchar();
return 0;
}

printf("%d",voidd[0]);にてほしい値が表示されません。
どうすればいいですか?
よろしくお願いします。
#include<stdio.h>
int main()
{
/*
Calc.StringExpressionGet("1+((2+34)*2-111*77)*5-67*8/90");
Calc.StringExpressionResolve();
Calc.Print();
*/
int num[3];
num[0]=111;
num[1]=222;
num[2]=333;
char str[4]="ABC";
void **voidd;
voidd=new void*[6];
voidd[0]=(void *)&num[0];
voidd[1]=(void *)&str[0];
voidd[2]=(void *)&num[1];
voidd[3]=(void *)&str[1];
voidd[4]=...続きを読む

Aベストアンサー

No.1です。すみません、間違えました。

*(int*)(voidd[0])

です。

Q

によって
onclickの動作をさせた後
<a name="z"></a>へのジャンプをさせようとしたのですが
onclickの動作だけがおこなわれジャンプ動作をしません
onclickで非表示の内容を表示させその表示された部分の特定の場所
にジャンプさせたいのです
何かいい方法はあるでしょうか?
よろしくお願いします

<a href="#z" onclick="document.getElementById('x').style.display='block';return false">
go to 99
</a>
<br/>
<br/>
<div id="x" style="display:none">
1<br/>
2<br/>
.............
99<br/>
<a name="z"></a>
</div>

Aベストアンサー

onclick=" "の中の return false の意味をわからず付けていると言うことでしょうか?
それは「ジャンプさせない」という指示なので、付けなければいいかと。

Qvoid main()って誰が最初?:ANSI-C

ANSI-C言語に関することです。
ベンダー拡張やOS固有機能は除外してください。

よく、書籍でvoid main(void)と書いたサンプルを見かけます。
プログラミング言語Cではint main(void)だし、C言語FAQでも「void main(void)は間違いである」と書いてあるのに…。
過去の質問への回答で「ANSI-Cでは…」と解説している人がいたのでANSI-Cの仕様を調べてもint main(void)の方が正しいように書かれていました。

これだけ資料が揃っているのにいまだにvoid main(void)と書かれた書籍がイッパイあるのはなぜなんでしょう?
最初にvoid main(void)って書いた人がものすごく影響力のある人だったのか?と想像してしまいます。
いったい誰が最初にvoid main(void)と書き始めたのでしょうか?

Aベストアンサー

 昔は『プログラミング言語C』が void main(void) と書いていたからです。

 この本はC言語を開発したDr.KernighanとDr.Ritchieが1978年に発表したものです。
 言語設計者が自ら開発した本として大きな影響力を持ち、「K&R本」と呼ばれて親しまれてきました。

 しかしK&R本の内容では、言語設計として曖昧な部分、不適切な部分もありました。そこで言語設計を洗いなおしたのが1988年のANSI規格です。

 同じころにK&R本もANSI規格に合致するように内容を改定して、『プログラミング言語C 第2版』として再発表されました。

 共立出版から出ている和訳本も、初めは第1版の翻訳でしたが、ANSI以降は第2版の翻訳になっちます。

 しかし我々は、日本語でもそうですが言語習慣というものはなかなか変えられません。だから今でも(コンパイラが許すなら)void main(void)と書く人もいるわけです。

参考URL:http://www.bohyoh.com/CandCPP/C/history.html

 昔は『プログラミング言語C』が void main(void) と書いていたからです。

 この本はC言語を開発したDr.KernighanとDr.Ritchieが1978年に発表したものです。
 言語設計者が自ら開発した本として大きな影響力を持ち、「K&R本」と呼ばれて親しまれてきました。

 しかしK&R本の内容では、言語設計として曖昧な部分、不適切な部分もありました。そこで言語設計を洗いなおしたのが1988年のANSI規格です。

 同じころにK&R本もANSI規格に合致するように内容を改定して、『プログラミング言語C 第2版』と...続きを読む

Qvoid*型の配列について

void* a[2];
void* b = a;
void* c[2] = (void *[2])b;

error C2440: '型キャスト' : 'void *' から 'void *[2]' に変換できません。
配列型への変換はありませんが、参照またはポインタから配列への変換があります。

void*型にした a を再度void*型の配列に戻すにはどのように記述すればよいでしょうか?

環境はXP(SP3)のVS2008 MFC です。

宜しくお願いいたします。

Aベストアンサー

void* a[2];
void* b;
void* (*c)[2];

b = (void*)a;
c = (void* (*)[2])b;

ってことですか?

Q

を統合変換

テキストの改行変換をジャバスクリプトで、

if(getId("br_1").checked==true){
str = str.replace(/&lt;br&gt;/g, "\n");
}
if(getId("br_2").checked==true){
str = str.replace(/(&lt;br \/&gt;)/g, "\n");
}

<input type="checkbox" name="br_1" />削除1
<input type="checkbox" name="br_2" />削除2

これで、
<br>と<br />が\n変換されるようになりましたが、
これで書き方は正しいでしょうか?
また、
これをラジオボタンで
「なし」「削除1」「削除2」と単一選択にしたいのですが、
どうやればよいのでしょうか?

 

Aベストアンサー

<input type="radio" name="br" >なし
<input type="radio" name="br">削除1
<input type="radio" name="br">削除2

typeをラジオボタンにして、名前を同じにすれば
ひとまとまりになります。

あとはJSのonselectやonclickメソッドを使って
処理してやれば処理してやればいいでしょう。

replaceを使った書き換えはよくやる方法ですので問題ないと思いますよ。

Qc言語 引数のvoidについて

/*sample01.c*/
void f(void);
void f(void){
}

/*sample02.c*/
void f(void);
void f(){
}

sample02.cの方で関数fの引数のvoidを省略できるのはなぜですか?
コンパイラはDev-C++ Version4.9.9.2
OSはWindowsXPです。
よろしくおねがいします。

Aベストアンサー

> sample02.cの方で関数fの引数のvoidを省略できるのはなぜですか?

長いので規格を引用するのはやめますが、二つの関数型が適合するための条件を満たしているからです。JIS X3010:2003 6.7.5.3 関数宣言子(関数原型を含む)を参照してください。p89~p90にかけての記述がこれに該当します。

Qtextarea中の

に全置換

<form action="略" method="post" name="foo">
(中略)
<textarea name="bar" rows="4" cols="40">
</textarea>
(中略)
</form>

今、上記のformがあります。
で、このtextarea内の<br>を<br />に全置換するために、
<intut type="button" name="hoge" value="textare内の 「&lt;br&gt;⇒&lt;br /&gt;」を全置換" />
のようなボタンを配置したいです。
で、この<input type="button"(中略) />をおすとJSで<br>を<br />に全置換できるようにしたいのでうが、
どのようにくめばいいのでしょうか?

なお、いま手許ソースがないので、name属性ではなくid属性だったかもしれません。
あるいはnameとidの両方の属性がついてたかもしれません。

どのようにくめばいいかご存じの方、よろしければそのJSの記述をお教えください。

以上、よろしくお願い申し上げます。

<form action="略" method="post" name="foo">
(中略)
<textarea name="bar" rows="4" cols="40">
</textarea>
(中略)
</form>

今、上記のformがあります。
で、このtextarea内の<br>を<br />に全置換するために、
<intut type="button" name="hoge" value="textare内の 「&lt;br&gt;⇒&lt;br /&gt;」を全置換" />
のようなボタンを配置したいです。
で、この<input type="button"(中略) />をおすとJSで<br>を<br />に全置換できるようにしたいのでうが、
どのようにくめばいいのでしょうか?

なお、いま手...続きを読む

Aベストアンサー

>なお、いま手許ソースがないので、name属性ではなくid属性だったかもしれません。
>あるいはnameとidの両方の属性がついてたかもしれません。
name属性か、id属性かによって、ソースは変わってきます。
<input type="button" name="hoge" onclick="sample();" value="textare内の 「&lt;br&gt;⇒&lt;br /&gt;」を全置換" />
<script type="text/javascript"><!--
function sample(){
var ele=document.forms['foo'].elements['bar'],value=ele.value;
if(value)ele.value=value.replace(/<br>/g,'<br />');
}
//--></script>

これでどうでしょうか。

Qint main()、void main()、void main(void)、int main(void)

今日、大学でC言語の講義の時間、先生が、

#include <stdio.h>

void main(void){

}

と宣言してプログラムを書くと教えていました。
main関数には、
main()
void main()
void main( void )
int main()
int main( void )

と、人によりいくつかの描き方があったりします。
どれが本当は正しいのでしょうか?
void mainはすべきではないとなんかの本で読んだのですが・・。

Aベストアンサー

通称C89という以前の言語規格(現行コンパイラの多くが準拠)では、下記のいずれかが正しい。
int main(int argc, char *argv[])
int main(void)

但し、最新のC言語規格(通称C99)では、
<ISO/IEC9899:1999>
or in some other implementation-defined manner.
</ISO/IEC9899:1999>
となっているので、処理系が戻り値のvoidを認めていればvoidも可。
# 組込み系などで戻り値を使わない環境もあるためでしょうか。

なので、コンパイラのマニュアルで戻り値のvoidにしていい/しろと書いてない限り、
voidは言語仕様的には正しくない。(でも動くものもある)

Q間へスクリプト結果の表示

下記のスクリプト(現在のURL表示)を<a href>~</A>の間に表示させることは可能でしょうか。


<スクリプト>
<SCRIPT LANGUAGE=javascript>
<!--
document.write( location.href );
// -->
</script>


<a href="───ここに───;sort=up1">▼</A>
<a href="───ここに───;sort=down1">▲</A>

Aベストアンサー

方法はいろいろあると思いますが、たとえば、

<a href="#" id="ancU">▼</a>
<a href="#" id="ancD">▲</a>
<script type="text/javascript">
<!--
var thisLoc = window.location.href;
document.getElementById("ancU").src = thisLoc + ";sort=up1";
document.getElementById("ancD").src = thisLoc + ";sort=down1";
// -->
</script>

または、

<script type="text/javascript">
<!--
var thisLoc = window.location.href;
document.write('<a href="' + thisLoc + ';sort=up1">▼</a>');
document.write('<a href="' + thisLoc + ';sort=down1">▲</a>');
// -->
</script>

方法はいろいろあると思いますが、たとえば、

<a href="#" id="ancU">▼</a>
<a href="#" id="ancD">▲</a>
<script type="text/javascript">
<!--
var thisLoc = window.location.href;
document.getElementById("ancU").src = thisLoc + ";sort=up1";
document.getElementById("ancD").src = thisLoc + ";sort=down1";
// -->
</script>

または、

<script type="text/javascript">
<!--
var thisLoc = window.location.href;
document.write('<a href="' + thisLoc + ';sort=up1">▼</a>');
d...続きを読む


人気Q&Aランキング

おすすめ情報