求救,each大量加载数据,崩溃问题

讨论 未结
6 321
淡忘流年
淡忘流年 2018-4-16
悬赏:20飞吻
$.each(dataList, function (i, o) {
var rowIndex = i+1;
//$('a[id^=Add_ChouPanDetail_]').click();

console.log(rowIndex);
});
上面注释的为页面table加一行,,求高手指点下,这个怎么破?
click那行注释不影响速度,只要取消注释就会卡死,,因为数据有200多行,每次都要加一个tr是业务需要
[泪]
回帖
  • 为啥吧click加到循环里????[汗]
    0 回复
  • @flyer876760 需要动态增加行
    0 回复
  • 表格貌似达到100以上就卡得可以了,再上去的操作可想而知,估计你整理一下需求,看下大家有没有更好的方案更靠谱一些。
    0 回复
  • en 加了setTimeOut了
    这个看似靠谱 但是多了 就会出现 开始很快
    后面就很慢 接近卡顿
    0 回复
  • 辰紫天
    2018-4-17
    不能这样写吗?循环数据完成后在做响应的事件处理
    $.each(dataList, function (i, o) {
    var rowIndex = i+1;


    console.log(rowIndex);
    });
    $('a[id^=Add_ChouPanDetail_]').click();
    0 回复
  • @辰紫天 不能 那个是人家的控件,必须动态添加一行 然后绑定数据
    //get盘点清单
    function getPanDianList() {
    var dbName = $('#control3 select').find("option:selected").text();//alert(dbName);
    var cangkuCode = $('#Control15').val();
    if (cangkuCode == '' || cangkuCode == null) {
    layer.msg('请先选择仓库!'); return false;
    }
    layer.msg('数据绑定中,请稍后...', { icon: 16, time: 0, shade: 0.06 });
    var strList = ''; $('#control7 .fa-minus').click(); //删除所有数据
    $.when(getAjaxPanDianList(dbName, cangkuCode)).done(function (data) {
    if (data.toString() == 'false') {
    return false;
    }
    var dataList = eval(data);
    var i = 0; var thisTimeOut; var isclose = false;
    //$.each(dataList, function (i, o) {
    //console.log(rowIndex);
    thisTimeOut = setInterval(function () {
    var rowIndex = i + 1;
    $('#tips').text(rowIndex + '/' + dataList.length);
    $('a[id^=Add_ChouPanDetail_]').click();
    $.MvcSheetUI.SetControlValue('ChouPanDetail.GoodPosition', dataList[i].货位, rowIndex); //alert(dataList[i].Postcoding)
    $.MvcSheetUI.SetControlValue('ChouPanDetail.CunHuoID', dataList[i].存货编码, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.CunHuoCode', dataList[i].存货代码, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.CunHuoName', dataList[i].存货名称, rowIndex);

    $.MvcSheetUI.SetControlValue('ChouPanDetail.FormatType', dataList[i].规格型号, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.MainJLID', dataList[i].主计量编码, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.MainJLName', dataList[i].主计量名称, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.MainJLCount', dataList[i].主计量数量, rowIndex);

    $.MvcSheetUI.SetControlValue('ChouPanDetail.FuJLID', dataList[i].辅计量编码, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.FuJLName', dataList[i].辅计量名称, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.FuJLCount', dataList[i].辅计量数量, rowIndex);

    $.MvcSheetUI.SetControlValue('ChouPanDetail.cFree1', dataList[i].cFree1, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.cFree2', dataList[i].cFree2, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.cFree3', dataList[i].cFree3, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.cFree4', dataList[i].cFree4, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.cFree5', dataList[i].cFree5, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.cFree6', dataList[i].cFree6, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.cFree7', dataList[i].cFree7, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.cFree8', dataList[i].cFree8, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.cFree9', dataList[i].cFree9, rowIndex);
    $.MvcSheetUI.SetControlValue('ChouPanDetail.cFree10', dataList[i].cFree10, rowIndex);

    $.MvcSheetUI.SetControlValue('ChouPanDetail.HuanSuanLv', dataList[i].换算率, rowIndex);
    i++;
    if (rowIndex == dataList.length) {
    isclose = true;
    clearInterval(thisTimeOut);
    //倒数第二项Control16_ctl25_Row11
    $('input[id^=Control16_ctl25_]').change(function () {
    var aa = $(this).parent().prev('td').find('input').val();
    var bb = $(this).val();
    //var cc = $(this).parent().next('td').find('input').val();
    $(this).parent().next('td').find('input').val(Number((aa * bb).toFixed(2)));
    });
    //倒数第一项Control16_ctl26_Row11
    $('input[id^=Control16_ctl26_]').change(function () {
    var aa = $(this).parent().prev().prev('td').find('input').val();
    //var bb = $(this).parent().prev('td').find('input').val();
    var cc = $(this).val();
    var chuRes = Number((cc / aa).toFixed(2));
    if (chuRes == 'Infinity') {
    chuRes = 0;
    }
    $(this).parent().prev('td').find('input').val(chuRes);
    });
    }
    if (isclose) {
    layer.closeAll();
    }
    }, 200);
    }).fail(function () { alert("出错啦!"); });
    //});
    }
    0 回复