是否可以在循环中结束代码?

时间:2013-01-29 15:02:09

标签: javascript jquery

此页面上有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次 - 这将是非常大的代码。

请告诉我是否在循环中执行代码,以免多次重复?

3 个答案:

答案 0 :(得分: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
});

答案 1 :(得分: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);

答案 2 :(得分:0)

你可以做的是你可以将测试作为数组并使用此代码

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

  }, 15000);