バインディングエラーJavascriptのforループで[イベント]をクリックします

マヒ

アラートonclickで配列要素(オブジェクトの可能性があります)を取得しようとしています。しかし、messageクリックで拘束されていません。

this.openLink() methodアラートが表示されず、message値が正しい。

クリックイベントをバインドしているときに、ここで何かが足りませんか?

<!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script> 

     function myBox(){

     this.create = (id, id3 , arrData) => {
     var html = "<div id='box1' class='col-12'></div>";
     $("#box").append(html);
      var html1 = "<div id='box2' class='col-12'></div>";
     $("#box").append(html1);
     this.createList(id, id3 , arrData)

     }

     this.createList = (id, id3 , arrData) =>{
     var html = '';
         html +='<ul id="' + id + '_List" class="col-12 rmpm" style="overflow-x:scroll;overflow-y:hidden;list-style-                 type:none;white-space:nowrap;font-size:0;padding: 0px 0px 10px 0px;">';
          for (var i = 0; i < arrData.length; i++) {
             var iD = id + '_utt' + i;
          html += '<li  id="' + iD + '"   class="col-12 rmpm" style="display:inline;width:auto;border:1px solid         #ccc;display:inline-block;font-size:14px;padding: 5px;border-radius: 5px;margin: 10px 10px 10px 0px; cursor: pointer;">';
          html += arrData[i];
          html += '</li>';
        }
          html += '</ul>';
          $(id3).append(html);

// ---> here, some error for binding click event on li

          arrData.forEach((element) => {
            $(document).on('click', '#' + iD, () => {
              this.openLink(element);
            });
        });
     }

     this.openLink = (message) =>{
      alert(message); //a,b,c,as,bqsq,csqs  <--- alert expecting here
     }
     }


    </script> 
    <script>
    function abc(){
      var  arrData = ['a','b','c'];
      var arrData2 = ['as','bqsq','csqs'];
     var bx = new myBox();
       bx.create('arrData',"#box1" , arrData);
         bx.create('arrData2',"#box2" , arrData2);
    }

    </script> 
    </head>
    <body>
    <button onclick="abc()">Clcik</button>
    <div id="box" style=""></div>

    </body>
    </html>
ニルス・ケーラー

foreachの上のforループでIDをアセンブルし、そのIDを使用してクリックリスナーを設定します。foreachのすべてのループで正しいIDをアセンブルする必要があります。そうしないと、最後のボタンにのみリスナーを配置します。 。

forEachを次のように変更します。

arrData.forEach((element, index) => {
var clickId = id + '_utt' + index;
  $(document).on('click', '#' + clickId, () => {
    this.openLink(element);
  });
});

としてhtmlに入れるにonclick="function()"は、HTMLを作成するときに最初のループで割り当てる必要があります。openlink外に移動しますmyBox()

function myBox() {

  this.create = (id, id3, arrData) => {
    var html = "<div id='box1' class='col-12'></div>";
    $("#box").append(html);
    var html1 = "<div id='box2' class='col-12'></div>";
    $("#box").append(html1);
    this.createList(id, id3, arrData)

  }

  this.createList = (id, id3, arrData) => {
    var html = '';
    html += '<ul id="' + id + '_List" class="col-12 rmpm" style="overflow-x:scroll;overflow-y:hidden;list-style-                 type:none;white-space:nowrap;font-size:0;padding: 0px 0px 10px 0px;">';
    for (var i = 0; i < arrData.length; i++) {
      var iD = id + '_utt' + i;
      html += '<li ' + 'onclick="openLink(\'' + arrData[i] + '\')" id="' + iD + '"   class="col-12 rmpm" style="display:inline;width:auto;border:1px solid         #ccc;display:inline-block;font-size:14px;padding: 5px;border-radius: 5px;margin: 10px 10px 10px 0px; cursor: pointer;">';
      html += arrData[i];
      html += '</li>';
    }
    html += '</ul>';
    $(id3).append(html);
  }
}

openLink = (message) => {
  alert(message); //a,b,c,as,bqsq,csqs  <--- alert expecting here
}

function abc() {
  var arrData = ['a', 'b', 'c'];
  var arrData2 = ['as', 'bqsq', 'csqs'];
  var bx = new myBox();
  bx.create('arrData', "#box1", arrData);
  bx.create('arrData2', "#box2", arrData2);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

<body>
  <button onclick="abc()">Clcik</button>
  <div id="box" style=""></div>
</body>

'+' onclick = "openLink(\ '' + arrData [i] + '\')"。これはどのように機能しましたか。私が理解できるように、説明またはリンクを提供していただけませんか

線はonclick="openLink('a')" onclick="openLink(、記述されたとおりにDOMへのレンダリングとしてレンダリングされます。\'レンダリング'DOMとJavaScriptでiは、文字列を破るいけない文字その方法として、それを見ているが、それはとしてレンダリング'DOMインチ 次に、arrData[i]それが配列のn番目(またはi番目)のインデックスであること追加します。次に、同じトリックを使用してonclick関数を閉じます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

タイムスタンプでSQLデータベースクエリをフィルタリングし、Laravelを使用してPHPのバックエンド

分類Dev

マルチレベルインデックスを使用してPandasデータフレームでグループ化とローリングウィンドウを実行すると、インデックスエントリが重複します

分類Dev

既存のjQueryクリックイベントをjavascript内の別のイベントでオーバーライド(ラップ)します

分類Dev

TinyMCEエディターはスクロールイベントのバブリングを防ぎます

分類Dev

オーディオトラックの特定のポイントでイベントまたはコールバックをトリガーする方法は?

分類Dev

バックエンドのグーテンベルクエディターの埋め込みスタイルシートを削除します

分類Dev

モバイルファーストデザインのメディアクエリでクラスプロパティを削除しますか?

分類Dev

コールバックを使用してJavaでデリゲートイベントモデルサンプルプログラムを作成する

分類Dev

コールバックを使用してJavaでデリゲートイベントモデルサンプルプログラムを作成する

分類Dev

S3バケットから画像(ファイル)をレンダリングする方法は、フロントエンドですべてのパブリックアクセスをブロックしました(プライベート書き込み、プライベート読み取り)

分類Dev

バックボーンjsのクリックイベントでajaxリクエストを送信します

分類Dev

ローカルアセットディレクトリからAndroidStudioの実際のデバイスにapkをプログラムでインストール/アンインストールします

分類Dev

vim /ファイルエクスプローラー:ブラウジングディレクトリを現在のディレクトリにします

分類Dev

入力バインディングとルーターリンクを使用した単体テストの角度コンポーネントでエラーが発生する '未定義のプロパティ' __source 'を読み取れません'

分類Dev

Androidデータバインディングでクリックイベントを作成できません

分類Dev

Laravel-モデルバインディングのリダイレクトはコントローラーメソッドを実行します

分類Dev

AndroidはWiFi経由でダウンリンクデータをルーティングし、モバイルネットワーク経由でアップリンクデータをルーティングします

分類Dev

角度グリッドには、インライン剣道グリッドのエディターテンプレート(リアクティブフォーム)を含む列があります。テンプレートコントロール(テキストボックス)とフォームはリンクしません

分類Dev

AndroidXエラー:古いデータバインディングパッケージと新しいデータバインディングパッケージの両方が依存関係で利用可能です。フラッタープロジェクトをAndroidXにアップグレードしています

分類Dev

SpringMVCで受け入れられたコントローラーメソッドBean内のバインディングリクエストパラメーターとファイルをカスタマイズします

分類Dev

剣道グリッド列のクライアントテンプレートの2つのフィールドをバインドします

分類Dev

特定の JavaScript ライブラリ / クリエイティブ コーディング用の jQuery プラグインを探しています

分類Dev

ブートストラップモーダル内のボタンクリックイベントでアクティブなタブIDを取得します

分類Dev

CSS:レンダリングされたピクセルの代わりにSVGグループ領域にカーソルを合わせると、ポインターイベント:バウンディングボックスがブラウザー間で機能しません。回避方法

分類Dev

Javascriptを介してHttpサーバー側のリクエスト(ドキュメントタイプ)イベントをリッスンします

分類Dev

デフォルトでグーグルマップを開くすべてのモバイルデバイスのリンクを作成します

分類Dev

オブジェクトメソッドコールバックは、パラメーターとして渡された場合はイベントハンドラーでのバインディングを失いますが、ハードコーディングされた場合は失われません。

分類Dev

forループ内でクエリクリックイベントをトリガーします

分類Dev

シンプルなクリックイベントは、Ubuntuのタッチスクリーンデバイスで機能します

Related 関連記事

  1. 1

    タイムスタンプでSQLデータベースクエリをフィルタリングし、Laravelを使用してPHPのバックエンド

  2. 2

    マルチレベルインデックスを使用してPandasデータフレームでグループ化とローリングウィンドウを実行すると、インデックスエントリが重複します

  3. 3

    既存のjQueryクリックイベントをjavascript内の別のイベントでオーバーライド(ラップ)します

  4. 4

    TinyMCEエディターはスクロールイベントのバブリングを防ぎます

  5. 5

    オーディオトラックの特定のポイントでイベントまたはコールバックをトリガーする方法は?

  6. 6

    バックエンドのグーテンベルクエディターの埋め込みスタイルシートを削除します

  7. 7

    モバイルファーストデザインのメディアクエリでクラスプロパティを削除しますか?

  8. 8

    コールバックを使用してJavaでデリゲートイベントモデルサンプルプログラムを作成する

  9. 9

    コールバックを使用してJavaでデリゲートイベントモデルサンプルプログラムを作成する

  10. 10

    S3バケットから画像(ファイル)をレンダリングする方法は、フロントエンドですべてのパブリックアクセスをブロックしました(プライベート書き込み、プライベート読み取り)

  11. 11

    バックボーンjsのクリックイベントでajaxリクエストを送信します

  12. 12

    ローカルアセットディレクトリからAndroidStudioの実際のデバイスにapkをプログラムでインストール/アンインストールします

  13. 13

    vim /ファイルエクスプローラー:ブラウジングディレクトリを現在のディレクトリにします

  14. 14

    入力バインディングとルーターリンクを使用した単体テストの角度コンポーネントでエラーが発生する '未定義のプロパティ' __source 'を読み取れません'

  15. 15

    Androidデータバインディングでクリックイベントを作成できません

  16. 16

    Laravel-モデルバインディングのリダイレクトはコントローラーメソッドを実行します

  17. 17

    AndroidはWiFi経由でダウンリンクデータをルーティングし、モバイルネットワーク経由でアップリンクデータをルーティングします

  18. 18

    角度グリッドには、インライン剣道グリッドのエディターテンプレート(リアクティブフォーム)を含む列があります。テンプレートコントロール(テキストボックス)とフォームはリンクしません

  19. 19

    AndroidXエラー:古いデータバインディングパッケージと新しいデータバインディングパッケージの両方が依存関係で利用可能です。フラッタープロジェクトをAndroidXにアップグレードしています

  20. 20

    SpringMVCで受け入れられたコントローラーメソッドBean内のバインディングリクエストパラメーターとファイルをカスタマイズします

  21. 21

    剣道グリッド列のクライアントテンプレートの2つのフィールドをバインドします

  22. 22

    特定の JavaScript ライブラリ / クリエイティブ コーディング用の jQuery プラグインを探しています

  23. 23

    ブートストラップモーダル内のボタンクリックイベントでアクティブなタブIDを取得します

  24. 24

    CSS:レンダリングされたピクセルの代わりにSVGグループ領域にカーソルを合わせると、ポインターイベント:バウンディングボックスがブラウザー間で機能しません。回避方法

  25. 25

    Javascriptを介してHttpサーバー側のリクエスト(ドキュメントタイプ)イベントをリッスンします

  26. 26

    デフォルトでグーグルマップを開くすべてのモバイルデバイスのリンクを作成します

  27. 27

    オブジェクトメソッドコールバックは、パラメーターとして渡された場合はイベントハンドラーでのバインディングを失いますが、ハードコーディングされた場合は失われません。

  28. 28

    forループ内でクエリクリックイベントをトリガーします

  29. 29

    シンプルなクリックイベントは、Ubuntuのタッチスクリーンデバイスで機能します

ホットタグ

アーカイブ