显示来自for循环的数组内容

时间:2016-11-12 13:24:57

标签: jquery arrays closures push

我正在尝试从randomTable显示一个数字8秒,1by1。可悲的是,它根本没有显示任何东西。

    var numberTable = [];
    var randomTable = [];

    $('#pooling').append('<div id="box"> </div>');

    for (var i=1;i<=32;i++) {
        numberTable.push(i);
    }

    for (var i=0;i<8;i++) {
        (function (e) {
            randomTable.push(1 + Math.floor(Math.random() * (32 - e)));
            numberTable.splice(e,1);
            $('#box').replaceWith('<div id = "box>' + randomTable[e] + '</div>');
            $('#box').show(0).delay(8000).hide(0);
        })(i);
    }

当我删除第二个for循环时,它显示空的#box,但是使用此循环它根本不会创建这个div。可能是什么问题?

2 个答案:

答案 0 :(得分:1)

目前还不清楚你的意图是什么,但也许这会有所帮助:

var numberTable = [];
var randomTable = [];
for (var i = 1; i <= 32; i++) {
  numberTable.push(i);
}
for (var i = 0; i < 8; i++) {
  randomTable.push(1 + Math.floor(Math.random() * (32 - i)));
  numberTable.splice(i, 1);
}
console.log("randomTable: " + randomTable);

$('#box').text(randomTable[0]);
var x = 1;
function repeat(){
  window.setTimeout(function(){
    if (x < 8) {
      $('#box').text(randomTable[x]);
      x++;
      repeat();
    }
  },8000);
};
repeat();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="box"></p>

答案 1 :(得分:0)

首先 - "来电中缺少replaceWith

第二 - 使用这种方法,你总是应该只使用一个div(id = box),因为你在每次迭代中使用replaceWith覆盖它 - 你可以使用append和后缀id这样:

$('#box').append('<div id="box-' + e '">' + randomTable[e] + '</div>')

或完全保留id并使用类 - 如名称所暗示的那样 - 文档中应该只有一个具有相同ID的元素。

提供你的html标记愿望,如果这个愿望不适合。