javascript中有好多令我費解的東西, 一些問題我知道修改的方法,但解釋不了原因。 最近又碰到一個。
一個 “全選——刪除”功能, 以下是以下是單擊“刪除”按鈕出觸發程式碼片段: var tbody = document.getElementById("mappingTd" );
var mappingCheck = document.getElementsByName("checkboxInMapping" );
var length = mappingCheck.length;
for(i = 0; < length; ) {
if (mappingCheck.item(i).checked) {
var str_value = mappingCheck.item(i).value;
var tr = document.getElementById(str_value );
tbody.removeChild(tr);
}
else {
i++ ;
}
}
這段代碼有時候“全選”後並不能刪除全部所選資訊,幾率大概為2/3。修改時我的第一反應就是將for改成while,過去遇到過類似問題,for和while在js中有時候並不互換。以下是修改後的代碼: var tbody = document.getElementById("mappingTd" );
var mappingCheck = document.getElementsByName("checkboxInMapping" );
var length = mappingCheck.length;
var i = 0 ;
while(i < length) {
if (mappingCheck.item(i).checked) {
var str_value = mappingCheck.item(i).value;
var tr = document.getElementById(str_value);
tbody.removeChild(tr);
}
else {
i++ ;
}
}
這次可以完成所需功能,兩段代碼理應可以互換,不知道為什麼會出現這樣的問題,我知其然,不知其所以然。