我們有時候需要清除Select控制項中的Options集合下的值,
我在網上找了一下,大部分採用的是
obj = document.getElementById("drp"); ///drp是select控制項的ID值
for(i=0 ; i< obj.options.length ; i++)
obj.options[i] = null;
但這種方法好像不能完成清空操作的。
我測試了幾次,如果我有0到8這幾個數,我運行一次清除後,發現1,3,5,7還是存在的,再點擊一次清除則只存在3,7。每點一次,減少一半。
一開始想不通為什麼會這樣,後來想可能是這樣的:
由於obj.options.length是隨著使用者的obj.options[i] ] = null;操作一直的遞減的。
所以當刪除到第四個的時候,i=4, obj.options.length也等於4,所以就退出迴圈,以至於只刪除了一半。
因此正確的寫法是從後面開始刪除
obj = document.getElementById("drp"); ///drp是select控制項的ID值
for(i=obj.options.length-1 ; i>= 0 ; i--)
obj.options[i] = null;
這樣就可以一次清除
應該還有一種方法,就是把for迴圈中的obj.options.length用一個變數替代,在迴圈之前給這個變數賦值
Javascript確實不太方便,這種集合對象的清空在.Net通常只要調用該集合對象的Clear方法就行了,在這裡卻這麼麻煩。
我們有時候需要清除Select控制項中的Options集合下的值,
我在網上找了一下,大部分採用的是
obj = document.getElementById("drp"); ///drp是select控制項的ID值
for(i=0 ; i< obj.options.length ; i++)
obj.options[i] = null;
但這種方法好像不能完成清空操作的。
我測試了幾次,如果我有0到8這幾個數,我運行一次清除後,發現1,3,5,7還是存在的,再點擊一次清除則只存在3,7。每點一次,減少一半。
一開始想不通為什麼會這樣,後來想可能是這樣的:
由於obj.options.length是隨著使用者的obj.options[i] ] = null;操作一直的遞減的。
所以當刪除到第四個的時候,i=4, obj.options.length也等於4,所以就退出迴圈,以至於只刪除了一半。
因此正確的寫法是從後面開始刪除
obj = document.getElementById("drp"); ///drp是select控制項的ID值
for(i=obj.options.length-1 ; i>= 0 ; i--)
obj.options[i] = null;
這樣就可以一次清除
應該還有一種方法,就是把for迴圈中的obj.options.length用一個變數替代,在迴圈之前給這個變數賦值
Javascript確實不太方便,這種集合對象的清空在.Net通常只要調用該集合對象的Clear方法就行了,在這裡卻這麼麻煩。