Javascript 動的バインディングの単純な実装コード events_javascript スキル

WBOY
リリース: 2016-05-16 18:13:23
オリジナル
1081 人が閲覧しました

以下はページの DOM 構造です

コードをコピー コードは次のとおりです:


  • 1

  • 3
  • ;li>Four 以下のように:


    //ID に基づいてオブジェクトを取得します
    function id(v) { return document.getElementById(v) }

    //タグに基づいてオブジェクトを取得します
    function tag(element, t) { return element.getElementsByTagName(t) }
    window.onload = function() { / /テスト中のすべての li オブジェクトを取得しますvar li = tag (id("test"), "li")//ループを使用してマウス クリック イベントをバインドしますfor(var i=0; ili[i].onclick = function() {
    // 1,2,3,4 が表示されると予想されます
    //は常に 5
    alert(""(i 1) "項目" をクリックしました);
    }
    }
    }


    上記の現象はなぜ発生しますか?理由は「forにバインドされているイベントがすぐに実行されない」からです。変更されたコードは次のとおりです:




    コードをコピー


    コードは次のとおりです:


    // ID に基づいてオブジェクトを取得します
    function id(v) { return document.getElementById(v) }

    //タグに従ってオブジェクトを取得します
    function tag(element, t) { return element.getElementsByTagName(t); }
    window.onload = function() { //テスト中のすべての li オブジェクトを取得しますvar li = tag(id("test"), " li"); //ループを使用してマウス クリック イベントをバインドします for(var i=0; i(function() {
    var t = i
    li [i].onclick = function() {
    alert("t " 番目の "項目をクリックしました");
    }
    })();
    }
    }


    コードをテストします。通常はループ変数 i を onclick イベントに対応するハンドラー関数に渡します。
    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート