動的関数登録と解除

  JavaScript



  
<SCRIPT language="JavaScript">

// attachEvent した回数ぶん同じ関数でも登録されるので注意
// detachEvent も一回に一つしか解除は出来ない
// 'onclick' は全て小文字で

function ChangeEvent1() {
	document.all("MyButton").attachEvent('onclick', MyMessage1 );
	document.all("MyButton").attachEvent('onclick', MyMessage2 );
	alert("テストボタンに onClick イベントを登録しました   ")
}
function ChangeEvent2() {
	document.all("MyButton").detachEvent('onclick', MyMessage1 );
	alert("テストボタンから MyMessage1 関数を解除しました   ")
}
function ChangeEvent3() {
	document.all("MyButton").detachEvent('onclick', MyMessage2 );
	alert("テストボタンから MyMessage2 関数を解除しました   ")
}

function MyMessage1() {
	alert("メッセージ1")
}
function MyMessage2() {
	alert("メッセージ2")
}

</SCRIPT>

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS">
</HEAD>
<BODY>

<INPUT type=button name=ActButton value="両方の関数をイベント登録"
 onClick='ChangeEvent1()'><br>
<INPUT type=button name=ActButton value="MyMessage1を解除"
 onClick='ChangeEvent2()'><br>
<INPUT type=button name=ActButton value="MyMessage2を解除"
 onClick='ChangeEvent3()'>
<br><br>

このボタンに対して処理 --> <INPUT type=button name=MyButton value="テスト"><br>

</BODY>
</HTML>
  



  VBScript



  
<SCRIPT language="VBScript">

' attachEvent した回数ぶん同じ関数でも登録されるので注意
' detachEvent も一回に一つしか解除は出来ない
' "onclick" は全て小文字で

' getRef するたびに参照用のオブジェクトが作成されて、
' そのオブジェクトとイベントがリンクされるので、getRef
' するのは最初だけで、グローバル管理する必要があります

Dim fpMyMessage1,fpMyMessage2

function ChangeEvent1()
	Set fpMyMessage1 = getRef("MyMessage1")
	Set fpMyMessage2 = getRef("MyMessage2")
	Call document.all("MyButton").attachEvent("onclick", fpMyMessage1 )
	Call document.all("MyButton").attachEvent("onclick", fpMyMessage2 )
	alert("テストボタンに onClick イベントを登録しました   ")
end function
function ChangeEvent2()
	Call document.all("MyButton").detachEvent("onclick", fpMyMessage1 )
	alert("テストボタンから MyMessage1 関数を解除しました   ")
end function
function ChangeEvent3()
	Call document.all("MyButton").detachEvent("onclick", fpMyMessage2 )
	alert("テストボタンから MyMessage2 関数を解除しました   ")
end function

function MyMessage1()
	alert("メッセージ1")
end function
function MyMessage2()
	alert("メッセージ2")
end function

</SCRIPT>

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS">
</HEAD>
<BODY>

<INPUT type=button name=ActButton value="両方の関数をイベント登録"
 onClick='Call ChangeEvent1()'><br>
<INPUT type=button name=ActButton value="MyMessage1を解除"
 onClick='Call ChangeEvent2()'><br>
<INPUT type=button name=ActButton value="MyMessage2を解除"
 onClick='Call ChangeEvent3()'>
<br><br>

このボタンに対して処理 --> <INPUT type=button name=MyButton value="テスト"><br>

</BODY>
</HTML>
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ