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); }
結局、イベントハンドラに引数は渡せていないのだが。