2017-06-30 13 views
0

私は悩んでおり、この質問に対する答えを見つけることができないようです。forループを使用してクリックリスナーを追加しましたか?

ページの特定のオブジェクトがクリックされたときにアクセスする必要があるリンクされたリストがあります。 idと一致するノードが見つかるまで、このリンクリストをループするget(id)メソッドを作成しました。現時点では、私のリストには3つの項目があり、そのため0,1,2のIDがあります。setメソッドは、リンクされたリストの情報に基づいてページのhtmlを操作します。ここで

はsecondaryFeaturedは、jQueryのオブジェクトの配列である私のクリックのリスナーのためのコードです:

for(var i = 0; i < secondaryFeatured.length; i++) { 
    secondaryFeatured[i].click(function() { 
     set(list.get(i)); 
    }); 
} 

DoubleLinkedList.prototype.get = function(id) { 
    while(this.head.id != id) { 
     this.next(); 
    } 
    return this.head; 
} 

私がクリックすると、それが「3」IDを検索私のget関数で無限ループで立ち往生私の中には3つのオブジェクトしかありません(最後のオブジェクトは2のインデックスを持っています)。

+0

アイテムがリストに存在しない場合は、ループの中で永遠に詰まってしまいます。 – Fals

+0

あなたのループで 'var i'を' let i'に変えてみてください –

+0

getメソッドでクリックされた要素を取得しようとしていますか? – paulcpederson

答えて

0

get()を使用すると、クリックされた要素を取得しようとしています。あなたはこれを簡単に行うことができます。

for(var i = 0; i < secondaryFeatured.length; i++) { 
     secondaryFeatured[i].click(function() { 
      set(list.$(this)); 
     }); 
    } 
関連する問題