遍歷中的數組刪除數據問題


  今天開發jqgrid需要有單行刪除功能和所有選中刪除功能,在進行所有選中刪除功能開發時最簡單的代碼卻總是跑不通。

  其實心中早已預料到,肯定是自己寫了一些把自己繞進去的代碼,因為這幾行就是一個簡單的循環。

  找出這段自己繞自己的代碼,這勾起了我巨大的興趣,因為肯定有編程的細節我忽略了,在關鍵時刻,這些細節可能是致命的。

1 if("basMgmtGridIdGrid" == rowid) { 2     var ids = jqgrid.jqGrid('getGridParam', 'selarrrow'); 3     for(var i = 0; i < ids.length; i++) { 4  jqgrid.delRowData(ids[i]); 5  } 6 } else { 7  jqgrid.delRowData(rowid); 8 }

  前端顯示有兩個選中的行,觸發刪除所有選中行時之刪除了一行。

  原來數組的length屬性是動態變化的,刪除了一行,length就減1,但i還是執行i++了,結果不滿足下一次循環的條件了

  修改代碼

1 if("basMgmtGridIdGrid" == rowid) { 2     var ids = jqgrid.jqGrid('getGridParam', 'selarrrow'); 3     while(ids.length > 0) { 4         jqgrid.delRowData(ids[0]); 5  } 6 } else { 7  jqgrid.delRowData(rowid); 8 }

  聯想擴展:做為一個Java程序員,一下就想到了java中的集合,list、set、map的length()也是動態的。其實這些基本的知識自己都學過,但是就是不出錯記不住啊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM