首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >For循环在更新datatable.net表中已修改或新的记录时提前退出

For循环在更新datatable.net表中已修改或新的记录时提前退出
EN

Stack Overflow用户
提问于 2012-03-06 07:40:05
回答 1查看 361关注 0票数 1

我使用的是Datatables jQuery插件。该表从AJAX源( SQL Server查询,由ASP.NET处理为JSON对象)中提取数据。我想创建表格的实时视图,以便实时显示更改。但是,我使用fnAddData()fnUpdate()只更新新的或修改过的记录,而不是每隔几秒钟使用fnReloadAjax()重新加载整个表(根据经验,这在浏览器上是相当繁重的)。

在仅获得新的或修改的记录的JSON对象之后,下面是我处理该对象的代码。

代码语言:javascript
运行
复制
        var newData = updatedDataJSON.aaData;

        if (newData[0] != null) {                
            for (i = 0; i < newData.length; i++) {     //Loop through each object
                if (newData[i].bNewCase === true) {    //Process new cases
                    oTable.fnAddData(newData[i]);   
                } else {                              //Process modified cases   
                    var tableArray = oTable.fnGetData();
                    var index;
                    var found = false;
                    var serial = newData[i].serial;  
                    var dataObject = newData[i];

                    //First gotta find the index in the main table for 
                    // the record that has been modified.  This is done 
                    // by matching the serial number of the newData 
                    // object to the original aData set:

                    for (ii = 0; ii < tableArray.length; ii++) {
                        var value = tableArray[ii]['serial'];
                        value = value.replace(/<\/?[^>]+(>|$)/g, ""); 
                        if (value === serial) {
                            index = ii;
                            found = true;                                
                        }
                    }
                    if (found) {
                        oTable.fnUpdate(dataObject, index);
                        console.log('Updated ' + newData[i].serial);
                    }                                         
                }
            }
        }

我的问题是,即使第一个for循环的newData.length属性可能大于1,for循环也会提前退出(在一次迭代之后)。我在最后添加了console.log语句,它开始传递错误,指出newData[i].serial是未定义的。这让我觉得整个newData数组都被销毁了。

我真的希望我犯了一个愚蠢的错误(尽管我检查了一遍又一遍,但还是找不到)。也许我忽略了什么。如果任何人有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-06 19:46:48

在上面的评论中发布的解决方案归功于@elclarnrs。解决方案是在函数的作用域中声明iii的值。这让一切都很顺利。很高兴知道这一点,以便将来参考。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9575813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档