var setTime = "...";
var oSelect = document.createElement('select');
  ... (생략)
for (var i=0;i<startTimeList.length;i++) {
     var startTimeHHMM = startTimeList[i].startTimeHHMM;
     var startTime = data.startTimeList[i].startTime;
     if(setTime == startTimeHHMM){
         oSelect.selectedIndex = i;
     }

     var oOption = document.createElement('option');
     ... (생략)
     oSelect.appendChild(oOption, null);
}

위와 같은 식으로 코드를 작성하고 있었는데
자꾸 oSelect.selectedIndex가 -1로 설정되었다.

var setTime = "...";
var oSelect = document.createElement('select');
  ... (생략)
for (var i=0;i<startTimeList.length;i++) {
     var startTimeHHMM = startTimeList[i].startTimeHHMM;
     var startTime = data.startTimeList[i].startTime;
     var oOption = document.createElement('option');
     ... (생략)
     oSelect.appendChild(oOption, null);
     if(setTime == startTimeHHMM){
         oSelect.selectedIndex = i;
     }

}

위와 같이 바꾸어 주었더니 제대로 동작한다.
SELECT 오브젝트에서는 seletedIndex를 set 하기 전에 실제로 그 index가 존재하는지를 검사하는 일련의 validation을 거치는 것 같다.
만약 맨 위 코드처럼 selectedIndex에 해당하는 option 엘리먼트가 존재하지 않을 경우 selectedIndex는 -1로 설정된다.
저작자 표시 비영리
신고
posted by purecolor