2014-02-11 74 views
0
var sortitems = 1; 

function move(fbox, tbox, all) 
{ 
    for (var i = 0; i < fbox.options.length; i++) 
    { 
     if (!all && fbox.options[i].selected && fbox.options[i].value != "") 
     { 
      var no = new Option(); 
      no.value = fbox.options[i].value; 
      no.text = fbox.options[i].text; 
      tbox.options[tbox.options.length] = no; 
      fbox.options[i].value = ""; 
      fbox.options[i].text = ""; 
     } 
     else 
     { 
      if (all && fbox.options[i].value != "") 
      { 
       var no = new Option(); 
       no.value = fbox.options[i].value; 
       no.text = fbox.options[i].text; 
       tbox.options[tbox.options.length] = no; 
       fbox.options[i].value = ""; 
       fbox.options[i].text = ""; 
      } 
     } 
    } 
    BumpUp(fbox); 

    if (sortitems) 
SortD(tbox); 
    checkSelectAll(); 
} 

這個移動函數在點擊按鈕後被調用,然後它會調用按照字母順序排序的排序方法。所以我們不需要排序,我們需要填充數據,因爲它是從左側框到右側框,反之亦然,但排序正在發生。請幫忙在這裏。避免在JSP頁面中排序

function SortD(box) 
    { 
     var temp_opts = new Array(); 
     var temp = new Object(); 
     for (var i = 0; i < box.options.length; i++) 
     { 
      temp_opts[i] = box.options[i]; 
     } 
     for (var x = 0; x < temp_opts.length - 1; x++) 
     { 
      for (var y = (x + 1); y < temp_opts.length; y++) 
      { 
       if (temp_opts[x].value > temp_opts[y].value) 
       { 
        temp = temp_opts[x].text; 
        temp_opts[x].text = temp_opts[y].text; 
        temp_opts[y].text = temp; 
        temp = temp_opts[x].value; 
        temp_opts[x].value = temp_opts[y].value; 
        temp_opts[y].value = temp; 
       } 
      } 
     } 
     for (var i = 0; i < box.options.length; i++) 
     { 
      box.options[i].value = temp_opts[i].value; 
      box.options[i].text = temp_opts[i].text; 
     } 
    } 

取決於bumpup box功能。元素正在從一個箱子移動到另一個箱子。它將用空白的元素替換元素,並移動到頂部併爲所有元素執行操作。請大家幫幫忙我在這裏

在此先感謝

function BumpUp(box) 
    { 
     for (var i = 0; i < box.options.length; i++) 
     { 
      if (box.options[i].value == "") 
      { 
       for (var j = i; j < box.options.length - 1; j++) 
       { 
        box.options[j].value = box.options[j + 1].value; 
        box.options[j].text = box.options[j + 1].text; 
       } 
       var ln = i; 
       break; 
      } 
     } 
     if (ln < box.options.length) 
     { 
      box.options.length -= 1; 
      BumpUp(box); 
     } 
    } 

回答

0

也許這只是我,但它是很難看到的問題是在這裏。

如果僅僅是SORTD(TBOX)被稱爲移動()函數內,這是因爲 sortitems是正確的代碼的頂部設置爲1。 分揀項的值永遠不會在其他地方更改,因此該條件始終爲真,並始終調用SortD

if (sortitems) 
SortD(tbox);