イベントハンドラに引数を渡す

HTMLでアンカーをクリックするとある関数が走るとする。


<div id="div1">
<a href="javascript:void(0)"
onclick="test(1)">test</a>
</div>

これを動的に生成しようと考える。
しかも、test1はこのアンカーから見えないとする。
(今から書くスクリプトからは見える)


var div = document.getElementById("div1");
var aNode = document.createElement("a");
aNode.href = "javascript:void(0)";
aNode.innerHTML = "test1";
aNode.onclick = test1;
aNode.arg1 = 1;
div.appendChild(aNode);

しかし、これだとtest1に引数を渡せない。
こういうのはダメらしい。


aNode.onclick.arguments = [ 1 ];

引数ってのは実行時に決まるものだし、
そもそもargumentsオブジェクトはArrayオブジェクトではないらしい。


一応こうすれば実用上は問題ないが。


function test() {
alert(this.arg1);
}

----------------

aNode.arg1 = 1;

マシな方法を思いついた。


aNode.test = test;
aNode.onclick = function() { this.test(1); }

結局、イベントハンドラに引数は渡せていないのだが。