2016-03-24 9 views
0

私はウェブデザインの新人です。このコードではjqueryのjavascript配列

<script type="text/javascript">  

    var searchIDs = new Array(); 
    <% searches.forEach(function (search) { %> 
    searchIDs.push('<%= search._id%>'); 
    console.log('<%= search._id%>'); 
    <% }) %>  
</script> 

...

<script> 
    for (var i = 0; i < searchIDs.length; i++) { 
     $.get('../../tCounter', { search: searchIDs[i]}, function(data){ 

      console.log(data.c); 
      $("#" + searchIDs[i]).append("<b>" + data.c + "</b>"); 
     }); 
    } 
</script> 

私は、そのIDがsearchIDによって生成されたいくつかのdivを持っている:私はこのような問題を抱えています。私は、検索IDで別のHTMLコンポーネントに到達したい。問題はここで、私は取得して、コンソールのログ(data.c)でそれを参照して真のデータを得ることができます。データを書き込むために正しいコンポーネントに到達することはできません。常に同じdivに追加されます。私はあなたの提案を待っています ありがとうございました。

答えて

1

問題は、内部関数が非同期で実行されることです。ループが終了し、iは実行時に最も高い値になります。

これを回避する最も簡単な方法は、jQueryの$.each()この

$.each(searchIDs, function(i, id) { 
    $.get('../../tCounter', { 
    search: id 
    }, function(data) { 
    console.log(data.c); 
    $("#" + id).append("<b>" + data.c + "</b>"); 
    }); 
}); 
などを使用しています