0

このページには25の要素があります。

<div id="test1"></div>
<div id="test2"></div>
<div id="test3"></div>
<div id="test4"></div>
<div id="test5"></div>

また、divにhtmlを更新するためのコードがあります。

setInterval(function() {

  $.post("./main/", {
    record:1,
    opt:'get_res'
  }, function(data){
    $test1=data;
  });

}, 15000);

すべてのブロックのhtmlを変更するには、このコードを5回実行する必要があります。例:

setInterval(function() {

  $.post("./main/", {
    record:1,
    opt:'get_res'
  }, function(data){
    $test1=data;
  });

}, 15000);

setInterval(function() {

  $.post("./main/", {
    record:2,
    opt:'get_res'
  }, function(data){
    $test2=data;
  });

}, 15000);

.....
.....

setInterval(function() {

  $.post("./main/", {
    record:3,
    opt:'get_res'
  }, function(data){
    $test3=data;
  });

}, 15000);

たとえば、25個の要素の場合、divはこのコードを25回記述する必要があります。これは非常に大きなコードになります。

何度も繰り返さないように、コードをループで実装するかどうか教えてください。

4

3 に答える 3

4

http://api.jquery.com/each/関数を確認する必要があります。

更新:基本的に、任意のセレクターを使用して要素を見つけることができます

ページに単純な順序なしリストがあるとします。

<ul>
    <li>foo</li>
    <li>bar</li>
    <li class="findMe">foo2</li>
    <li class="findMe">bar2</li>
</ul>

リストアイテムを選択して、それらを反復処理できます。

$( ".findMe" ).each(function( index ) {
  //do something ... post or anything else
});
于 2013-01-29T15:07:12.430 に答える
2

なんらかの方法で要素を繰り返し処理し、インデックスを使用するか、IDから数値を抽出して、配列またはオブジェクトに格納します。

var test = {};
setInterval(function() {
    $('div[id^="test"]').each(function(i, ele) {
        (function(idx) {
            $.post("./main/", {
                record: idx,
                opt:'get_res'
            }, function(data){
                test[idx] = data;
            });
        })(i+1);
    });
}, 15000);
于 2013-01-29T15:06:16.783 に答える
0

あなたができることは、配列とこのコードを使用してテストを行うことができるということです

 for (i = 1 , i<=25 , i++)
  $.post("./main/", {
  record:i,
  opt:'get_res'
  }, function(data){
  $test[i]=data;
  });

  }, 15000);
于 2013-01-29T15:07:14.003 に答える