変更後の関数に変数を渡すと、変更後の関数(load)自体が実行されてしまい、うまくいきません
現在は以下のように、onclickの内容を変更しようとしていますが、
関数を実行させずに、html内のonclickの内容だけ書き換える場合はどのようにしたらいいですか?
document.getElementById('box').onclick = (function(id){ load(id) })(userid);
全体の動きがわかるサンプルコードがあるといいのですが。
これでどうでしょうか。
document.getElementById('box').onclick = function(){ load(this.id) };
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | Lhankor_Mhy | 814回 | 380回 | 232回 | 2011-05-20 12:30:18 |
2 | kebo987654 | 38回 | 33回 | 10回 | 2011-05-21 17:02:47 |
3 | haruo-31 | 80回 | 70回 | 10回 | 2011-05-22 03:52:02 |
コメント(2件)
あとイベントのコールバック引数にはイベントオブジェクトが入ります。
elem.onclick = function(e) {
console.log(e.type); //click
};
もともとonclick属性にイベントが仕掛けられていたならonclick属性の書き換えで変更できますが、addEventListenerでclickイベントが仕掛けられていた場合は、別になります。
Googleのトップページで実行。ロゴクリックで発動するデモです。
function piyo() {
alert('piyo!');
}
document.getElementById('hplogo').addEventListener('click', piyo,false);
document.getElementById('hplogo').onclick = function(){
alert('fuga!');
};
addEventListenerの場合は一旦removeEventListener('click')すればいいです。
document.getElementById('hplogo').removeEventListener('click', piyo, false);