すみません。
また JavaScript について質問させていただきます。

ボタンをクリックして処理を実行することができますが、例えば、1回目にクリックしたときには関数 test1() を実行、2回目にクリックしたときには関数 test2() を実行・・・という具合に処理を変えることはできますか?
可能であれば、その方法を教えてください。
よろしくお願します。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

#2です。

前回のはtest1を呼びだすボタンが1個の場合。
複数の場所から呼ばれる可能性があってどこから呼ばれても2回目はtest2にしたい場合は次のように。

function test1() {
// test1の処理
test1 = test2;//最後にtest1をtest2に書き換え。
}

# グローバル変数でflgを設けるなら関数の配列も要しておくとちょっとスマートかも。

var test = new Array(test1,test2);
var flg = 0;
function test1() {
flg = 1;
}
function test2() {
}

呼び出し例
onclick="test[flg]()"
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
参考になりました。

お礼日時:2005/06/18 18:01

グローバルな変数を使って1回目、2回目を判断する方法が


一般的でしょうね。
#以下、階層は全角空白で行っています。コピー注意

ボタンを押した時の処理をtest()とします。

<SCRIPT LANGUAGE="JavaScript">
<!--
var flg = 0;

function test()
{
 if( flg == 0 ){
 test1();
  flg = 1;
 } else if( flg == 1 ){
  test2();
  flg = 2;
 }
}

function test1(){
// 略
}
function test2(){
// 略
}
//-->
</SCRIPT>

2回目以降何もしないなら、このままでいいです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
参考になりました。

お礼日時:2005/06/18 18:01

test1を実行した後にonclickを書き換えるとか。



~ onclick="test1();this.onclick=test2"
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
参考になりました。

お礼日時:2005/06/18 18:00

まずtest0()を呼んで、その中でフラグを判断してから


1回目ならtest1()を実行
2回目ならtest2()を実行
これでいかがかしら?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
参考になりました。

お礼日時:2005/06/18 18:00

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング