2010-05-07 40 views
0

我正在試圖創建一個按鈕,它將SELECT MULTIPLE列表中當前選定的選項移動到該列表的頂部。我目前有OptionTransfer.js執行,這使我可以上下移動項目。我想添加一個新功能Move <option>以Javascript的頂部

function moveOptionTop(obj){ 
var i = obj.selectedIndex; 
if(i == 0){return;} 
var length = obj.options.length; 
for(j=length;j>0;j++){ obj.options[j] = obj.options[j-1]; //move all elements up a position to free up index 0 } 
obj.options[0] = obj.options[i+1]; //set new [0] element 
for(j=i+1;j
+0

恩,你沒看過許可證嗎?在這裏發佈代碼違反了許可證的條款。另外 - 你的問題是什麼? – 2010-05-07 11:23:03

+0

我的問題是如何將當前選定的選項移動到列表頂部(即將其索引設置爲0)。我嘗試了一下代碼,但它不起作用,我的算法看起來非常低效。我重新編輯了我原來的問題,以包含我寫的代碼。 – Adam 2010-05-07 12:00:46

回答

0

使用DOM操作方法。鑑於:從選擇

var select = document.getElementById ("...");  // select element 
var option = select.options[select.selectedIndex] // option element 
  1. 刪除選定的選項:select.removeChild (option)
  2. 重新插入它作爲第一個孩子:select.insertChild (option, select.firstChild)

或者使用select.add()和select.remove()

http://www.w3schools.com/jsref/dom_obj_select.asp

+0

這是很好的信息...但是,我有一個問題 - 它不適用於IE8。這裏是代碼,你能看到它的任何問題嗎? (el) 函數moveOptionTop // select element var option = selected.options [selected.selectedIndex]; //選項元素 selected.removeChild(option); selected.add(option,selected.firstChild); } – Adam 2010-05-07 14:05:01