javascriptでhtml内のonclickの内容を書き換えようとしていますが

変更後の関数に変数を渡すと、変更後の関数(load)自体が実行されてしまい、うまくいきません
現在は以下のように、onclickの内容を変更しようとしていますが、
関数を実行させずに、html内のonclickの内容だけ書き換える場合はどのようにしたらいいですか?

document.getElementById('box').onclick = (function(id){ load(id) })(userid);

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/05/27 08:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:Cherenkov No.1

回答回数1504ベストアンサー獲得回数493

ポイント60pt

全体の動きがわかるサンプルコードがあるといいのですが。

これでどうでしょうか。

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
  • id:Cherenkov
    回答1修正。this.idじゃなくてuseridかな。
  • id:Cherenkov
    (function(){})();はその場で即実行なのでイベントリスナーには使いません。
    あとイベントのコールバック引数にはイベントオブジェクトが入ります。
    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);

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません