본문 바로가기
프로그래밍/JavaScript

순서변경 스크립트

by 백룡화검 2012. 2. 9.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>
<script>
 // Multiple 형태의 Select Element의 순서를 바꾼다.
    // 예) moveItem('위치', 'Select Element ID')
    function moveItem(goto, elementId) {
        var element = document.getElementById(elementId);  // Multiple Select Element
        var selIndex = element.selectedIndex;              // Selected Index
        var elementLength = element.options.length;        // Select Element Item Length
        var selText = element.options[selIndex].text;      // Selected Item Text
        var selValue = element.options[selIndex].value;    // Selected Item Value

        if(selIndex < 0) {
            alert("선택해 주세요.");
            return;
        }

        if(goto == "top") {  // 최상위로 이동

            var index = selIndex;
            while(index > 0) {
                element.options[index].text = element.options[index-1].text;
                element.options[index].value = element.options[index-1].value;
                index--;
            }

            element.options[0].text = selText;
            element.options[0].value = selValue;
            element.selectedIndex = 0;

        } else if(goto == "up") {  // 위로 이동

            if(selIndex-1 < 0) return;

            var oldText = element.options[selIndex-1].text;
            var oldValue = element.options[selIndex-1].value;
            element.options[selIndex-1].text = selText;
            element.options[selIndex-1].value = selValue;
            element.options[selIndex].text = oldText;
            element.options[selIndex].value = oldValue;

            element.selectedIndex = selIndex-1;

        } else if(goto == "down") {  // 아래로 이동

            if(selIndex+2 > elementLength) return;

            var oldText = element.options[selIndex+1].text;
            var oldValue = element.options[selIndex+1].value;
            element.options[selIndex+1].text = selText;
            element.options[selIndex+1].value = selValue;
            element.options[selIndex].text = oldText;
            element.options[selIndex].value = oldValue;

            element.selectedIndex = selIndex+1;

        } else if(goto == "bottom") {  // 최하위로 이동

            var index = selIndex;
            while(index < elementLength-1) {
                element.options[index].text = element.options[index+1].text;
                element.options[index].value = element.options[index+1].value;
                index++;

           }

            element.options[element.options.length-1].text = selText;
            element.options[element.options.length-1].value = selValue;

            element.selectedIndex = element.options.length-1;

        } else return;
  }
  

</script>
 <BODY>
 <select name="rssItem" id="rssItem" multiple="multiple" size="10">
    <option value="11111">첫번째</option>
    <option value="22222">두번째</option>
    <option value="33333">세번째</option>
    <option value="44444">네번째</option>
    <option value="55555">다섯번째</option>
</select>

<input type="button" value="맨위로" onclick="moveItem('top', 'rssItem')" />
<input type="button" value="위로" onclick="moveItem('up', 'rssItem')" />
<input type="button" value="아래로" onclick="moveItem('down', 'rssItem')" />
<input type="button" value="맨아래로" onclick="moveItem('bottom', 'rssItem')" />

 </BODY>
</HTML>