根据count JS / jQuery获取循环计数和迭代循环

时间:2018-03-17 06:32:13

标签: javascript jquery

我有什么:

  • 一张有动态单元格的表格。
  • 所有单元格都有动态ID。
  • for循环,它会告诉我当前表中有多少个单元格。
  • 找到单元格数后,我会得到它的值并将其推入数组。
  • Ajax调用提交记录。

我想要实现的目标:

  • 如果我在桌子上有超过500个单元格;假设我在表格中有2130个单元格,然后我需要获得前500个单元格记录,然后将这些值推送到数组中。使用Ajax clear数组值提交值;再次获取501到1000的值将其推入数组并使用Ajax提交值;再次获得从1001到1500的值,直到我们达到2130.
  • 所以我需要做的是打破计数值并循环遍历它,直到它获得所有单元格值。

    function getValues(){
        var lengthCount = document.getElementsByName('f05').length; //this will 
        get me how many cells are there 
        console.log("Number of cells " + lengthCount);
        var columnValue = document.getElementsByName('f05'); 
        var pushValues = [];
    
        for (var i=0; i < lengthCount ; i++){
    
            var storeItemValue = columnValue[i].value; // getting cell values
            pushValues.push(storeItemValue); // pushing cell values
    
        }
    
        //ajax call to submit values.
    
    }
    

1 个答案:

答案 0 :(得分:1)

您只需向for添加条件:在每次迭代时,您都可以检查是否有时间使用AJAX发送pushItems
只要达到500限制即可推送您的商品并清除pushItems,或者它是columnValues中的最后一项。

类似的东西:

function postItems(items)
{
    return $.ajax(...);
}

function getValues() 
{
    var columnValue = document.getElementsByName('f05');

    // not a good idea if table may change during execution.
    // if some elements are removed after this line, then you may get an error during loop
    var lengthCount = columnValue.length; 

    console.log("Number of cells " + lengthCount);

    var pushValues = [], ajaxes = [];

    for (var i = 0; i < lengthCount; i++)
    {
        var storeItemValue = columnValue[i].value;
        pushValues.push(storeItemValue);

        if (i % 500 === 0 || i === lengthCount - 1)
        {
            var ajax = postItems(pushValues);
            pushValues = [];
        }
    }

    // $.when(...ajaxes).done(function() { <-- if you can use ES6
    $.when.apply($, ajaxes).done(function()
        alert("All done!");
    });
}

此解决方案尽可能接近您的代码,并显示了这个想法。它可以改进或缩短,例如使用Array.prototype.forEach