我有什么:
我想要实现的目标:
所以我需要做的是打破计数值并循环遍历它,直到它获得所有单元格值。
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.
}
答案 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
。