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

<html>
  <body>
    <script language="JavaScript" type="text/javascript">
      function test(){
        alert("testです")
      }
    </script>
    <input id="btntest" type="button" value="test" onclick="test()"/>
  </body>
</html>


このhtml文書に対し、

・test();
・document.getElementById("btntest").click;(ByTagName等を使用しても同じ方法とする)

上記方法以外にJavaScriptを用いて、
test()を実行するにはどうすればよいでしょうか?

var eventobj = document.getElementById("btntest").onclick;
eval(eventobj);

上記みたいな形でevalをよくわからずに試してみましたがダメでした。

A 回答 (2件)

関数もオブジェクトとして取得できるし、取得したオブジェクトも関数型になるのでカッコを付ければ呼び出し・実行できます。



<html>
<body>
<script language="JavaScript" type="text/javascript">
function test(){
alert("テストです")
}
function test2(){
var evHandler = document.getElementById("btntest").onclick;
//alert(typeof(evHandler));//onclickとそれを保存した変数は関数型
//カッコを付ければそれの呼び出し。
evHandler();
}
</script>
<input id="btntest" type="button" value="test" onclick="test()"/>
<input id="btntest2" type="button" value="test2" onclick="test2()"/>
</body>
</html>
    • good
    • 0
この回答へのお礼

おぉ!そうか、なるほど。

そういえば無名関数に名前を与える次のような有名なパターンがありますね。

var func = function(){}

これを実行するときは、func();とするわけですし、
それと同じことなんですね。

とてもすっきりしました。
回答ありがとうございました。

お礼日時:2007/10/11 23:48

なにをしたいのかよくわかりませんが、かっこをつけるだけでは?



<html>
<body>
<script language="JavaScript" type="text/javascript">
function test(){
alert("testです")
}
</script>
<input id="btntest" type="button" value="test" onclick="test()"/>
</body>
</html>
<script>
document.getElementById("btntest").click();
</script>

この回答への補足

すみません、カッコは付け忘れです。

document.getElementById("btntest").click();

以外の方法でお願いします。

やりたいこととしては、
イベントハンドラを変数などでいったん保持し、
それを再度実行できるのか?ということです。

補足日時:2007/10/10 23:20
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2007/10/11 23:45

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