묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
스크립트 소스의 문제점을 찾아주세요..~!!
2002.08.06 11:44
스크립트소스의 문제점을 좀 찾아주세요..~!!
두개의 option 메뉴가 있고.. 윗부분 선택하면.. 거기에 맞는 카타고리가 아랫부분에 떠야 하는데..
문제는.. option 값이 완전히 비어지지 않고.. 이전에 남아있던 값들이 함께 나타난다는 겁니다.
처음에 fashion 이라는 상품분류에서.. ticket 으로 옮기면..
4개의 브랜드명만 나타나야 하는데.. 4개 이외에..fashoin 쪽의 4개가 더 나타납니다.
또 , life 에 있다가 ticket 으로 옮기면..
4개 이외에 life 쪽의 하나가 더 나타납니다.
혹시 해결 방법 아시는 분 답변 주세요..^^;
//------------------------------------------------------------------------------------------------
<SCRIPT language=JavaScript>
function setBrand(ct){
switch(ct){
case '0':
case '1':
for(i=0;i<document.form.pr_brand.options.length;i++){
document.form.pr_brand.options[i] = null;
}
document.form.pr_brand.options[0] = new Option('CHRISTIAN DIOR','43');
document.form.pr_brand.options[0].value = '43';
document.form.pr_brand.options[1] = new Option('issi','5');
document.form.pr_brand.options[1].value = '5';
document.form.pr_brand.options[2] = new Option('metrocity','6');
document.form.pr_brand.options[2].value = '6';
document.form.pr_brand.options[3] = new Option('semisung','7');
document.form.pr_brand.options[3].value = '7';
document.form.pr_brand.options[4] = new Option('Baum & Mercier','10');
document.form.pr_brand.options[4].value = '10';
document.form.pr_brand.options[5] = new Option('Cartier','11');
document.form.pr_brand.options[5].value = '11'+ '+ ';
document.form.pr_brand.options[6] = new Option('armani','12');
document.form.pr_brand.options[6].value = '12';
document.form.pr_brand.options[7] = new Option('GUCCI','16');
document.form.pr_brand.options[7].value = '16';
document.form.pr_brand.options[8] = new Option('CARTIER','17');
document.form.pr_brand.options[8].value = '17';
document.form.pr_brand.options[9] = new Option('DUNHILL'+ ','18');
document.form.pr_brand.options[9].value = '18';
document.form.pr_brand.options[10] = new Option('DUPONT','19');
document.form.pr_brand.options[10].value = '19';
document.form.pr_brand.options[11] = new Option('ROLEX','20');
document.form.pr_brand.options[11].value = '20';
document.form.pr_brand.options[12] = new Option('LOUIS VUITTON','21');
document.form.pr_brand.options[12].value = '+ '21';
document.form.pr_brand.options[13] = new Option('MISSONI','22');
document.form.pr_brand.options[13].value = '22';
document.form.pr_brand.options[14] = new Option('BURBERRY','23'+ ');
document.form.pr_brand.options[14].value = '23';
document.form.pr_brand.options[15] = new Option('VERSACE','24');
document.form.pr_brand.options[15].value = '24';
break;
case '2':
for(i=0;i<document.form.pr_brand.options.length;i++){
document.form.pr_brand.options[i] = null;
}
document.form.pr_brand.options[0] = new Option('miele','8');
document.form.pr_brand.options[0].value = '8';
document.form.pr_brand.options[1] = new Option('philips','9');
document.form.pr_brand.options[1].value = '9';
document.form.pr_brand.options[2] = new Option('까사미아','13');
document.form.pr_brand.options[2].value = '13';
document.form.pr_brand.options[3] = new Option('whirlpool','14');
document.form.pr_brand.options[3].value = '14';
document.form.pr_brand.options[4] = new Option('이노센트','58');
document.form.pr_brand.options[4].value = '58';
document.form.pr_brand.options[5] = new Option('보루네오','60'+ ');
document.form.pr_brand.options[5].value = '60';
document.form.pr_brand.options[6] = new Option('리바트','61');
document.form.pr_brand.options[6].value = '61';
document.form.pr_brand.options[7] = new Option('올리브데코','62');
document.form.pr_brand.options[7].value = '62';
document.form.pr_brand.options[8] = new Option('시몬스','63');
document.form.pr_brand.options[8].value = '63';
document.form.pr_brand.options[9] = new Option('대진침대','64');
document.form.pr_brand.options[9].value = '+ '64';
break;
case '3':
for(i=0;i<document.form.pr_brand.options.length;i++){
document.form.pr_brand.options[i] = null;
}
document.form.pr_brand.options[0] = new Option('+ '꼬냑','45');
document.form.pr_brand.options[0].value = '45';
document.form.pr_brand.options[1] = new Option('위스키','46');
document.form.pr_brand.options[1].value = '+ '46';
document.form.pr_brand.options[2] = new Option('와인','47');
document.form.pr_brand.options[2].value = '47';
break;
case '4':
for(i=0;i<document.form.pr_brand.options.length;i++){
document.form.pr_brand.options[i] = null;
}
document.form.pr_brand.options[0] = new Option('백화점상품권','50');
document.form.pr_brand.options[0].value = '50';
document.form.pr_brand.options[1] = new Option('제화상품권','51');
document.form.pr_brand.options[1].value = '51';
document.form.pr_brand.options[2] = new Option('주유상품권','52');
document.form.pr_brand.options[2].value = '52';
document.form.pr_brand.options[3] = new Option('기타상품권','53');
document.form.pr_brand.options[3].value = '53';
}
}
</SCRIPT>
<BODY text=#000000 onload="setBrand('0');">
<center>
<br><br>
<FORM name=form action=prod_reg_ok.php method=post encType=multipart/form-data>
<TABLE borderColor=midnightblue cellSpacing=2 cellPadding=2 width=580 bgColor=midnightblue border=0>
<TR>
<TD width=150 bgColor=lavender>상품 분류</TD>
<TD bgColor=white colSpan=3><SELECT onchange=setBrand(this.options[this.selectedIndex].value) name=pr_class>
<OPTION value=1 selected>fashion</OPTION>
<OPTION value=2>life</OPTION>
<OPTION value=3>gift</OPTION>
<OPTION value=4>ticket</OPTION>
</SELECT>
</TD>
</TR>
<TR>
<TD width=150 bgColor=lavender> 브랜드명</TD>
<TD bgColor=white colSpan=3>
<SELECT name=pr_brand>
<OPTION selected></OPTION>
</SELECT>
</TD>
</TR>
</TABLE>
</FORM>
두개의 option 메뉴가 있고.. 윗부분 선택하면.. 거기에 맞는 카타고리가 아랫부분에 떠야 하는데..
문제는.. option 값이 완전히 비어지지 않고.. 이전에 남아있던 값들이 함께 나타난다는 겁니다.
처음에 fashion 이라는 상품분류에서.. ticket 으로 옮기면..
4개의 브랜드명만 나타나야 하는데.. 4개 이외에..fashoin 쪽의 4개가 더 나타납니다.
또 , life 에 있다가 ticket 으로 옮기면..
4개 이외에 life 쪽의 하나가 더 나타납니다.
혹시 해결 방법 아시는 분 답변 주세요..^^;
//------------------------------------------------------------------------------------------------
<SCRIPT language=JavaScript>
function setBrand(ct){
switch(ct){
case '0':
case '1':
for(i=0;i<document.form.pr_brand.options.length;i++){
document.form.pr_brand.options[i] = null;
}
document.form.pr_brand.options[0] = new Option('CHRISTIAN DIOR','43');
document.form.pr_brand.options[0].value = '43';
document.form.pr_brand.options[1] = new Option('issi','5');
document.form.pr_brand.options[1].value = '5';
document.form.pr_brand.options[2] = new Option('metrocity','6');
document.form.pr_brand.options[2].value = '6';
document.form.pr_brand.options[3] = new Option('semisung','7');
document.form.pr_brand.options[3].value = '7';
document.form.pr_brand.options[4] = new Option('Baum & Mercier','10');
document.form.pr_brand.options[4].value = '10';
document.form.pr_brand.options[5] = new Option('Cartier','11');
document.form.pr_brand.options[5].value = '11'+ '+ ';
document.form.pr_brand.options[6] = new Option('armani','12');
document.form.pr_brand.options[6].value = '12';
document.form.pr_brand.options[7] = new Option('GUCCI','16');
document.form.pr_brand.options[7].value = '16';
document.form.pr_brand.options[8] = new Option('CARTIER','17');
document.form.pr_brand.options[8].value = '17';
document.form.pr_brand.options[9] = new Option('DUNHILL'+ ','18');
document.form.pr_brand.options[9].value = '18';
document.form.pr_brand.options[10] = new Option('DUPONT','19');
document.form.pr_brand.options[10].value = '19';
document.form.pr_brand.options[11] = new Option('ROLEX','20');
document.form.pr_brand.options[11].value = '20';
document.form.pr_brand.options[12] = new Option('LOUIS VUITTON','21');
document.form.pr_brand.options[12].value = '+ '21';
document.form.pr_brand.options[13] = new Option('MISSONI','22');
document.form.pr_brand.options[13].value = '22';
document.form.pr_brand.options[14] = new Option('BURBERRY','23'+ ');
document.form.pr_brand.options[14].value = '23';
document.form.pr_brand.options[15] = new Option('VERSACE','24');
document.form.pr_brand.options[15].value = '24';
break;
case '2':
for(i=0;i<document.form.pr_brand.options.length;i++){
document.form.pr_brand.options[i] = null;
}
document.form.pr_brand.options[0] = new Option('miele','8');
document.form.pr_brand.options[0].value = '8';
document.form.pr_brand.options[1] = new Option('philips','9');
document.form.pr_brand.options[1].value = '9';
document.form.pr_brand.options[2] = new Option('까사미아','13');
document.form.pr_brand.options[2].value = '13';
document.form.pr_brand.options[3] = new Option('whirlpool','14');
document.form.pr_brand.options[3].value = '14';
document.form.pr_brand.options[4] = new Option('이노센트','58');
document.form.pr_brand.options[4].value = '58';
document.form.pr_brand.options[5] = new Option('보루네오','60'+ ');
document.form.pr_brand.options[5].value = '60';
document.form.pr_brand.options[6] = new Option('리바트','61');
document.form.pr_brand.options[6].value = '61';
document.form.pr_brand.options[7] = new Option('올리브데코','62');
document.form.pr_brand.options[7].value = '62';
document.form.pr_brand.options[8] = new Option('시몬스','63');
document.form.pr_brand.options[8].value = '63';
document.form.pr_brand.options[9] = new Option('대진침대','64');
document.form.pr_brand.options[9].value = '+ '64';
break;
case '3':
for(i=0;i<document.form.pr_brand.options.length;i++){
document.form.pr_brand.options[i] = null;
}
document.form.pr_brand.options[0] = new Option('+ '꼬냑','45');
document.form.pr_brand.options[0].value = '45';
document.form.pr_brand.options[1] = new Option('위스키','46');
document.form.pr_brand.options[1].value = '+ '46';
document.form.pr_brand.options[2] = new Option('와인','47');
document.form.pr_brand.options[2].value = '47';
break;
case '4':
for(i=0;i<document.form.pr_brand.options.length;i++){
document.form.pr_brand.options[i] = null;
}
document.form.pr_brand.options[0] = new Option('백화점상품권','50');
document.form.pr_brand.options[0].value = '50';
document.form.pr_brand.options[1] = new Option('제화상품권','51');
document.form.pr_brand.options[1].value = '51';
document.form.pr_brand.options[2] = new Option('주유상품권','52');
document.form.pr_brand.options[2].value = '52';
document.form.pr_brand.options[3] = new Option('기타상품권','53');
document.form.pr_brand.options[3].value = '53';
}
}
</SCRIPT>
<BODY text=#000000 onload="setBrand('0');">
<center>
<br><br>
<FORM name=form action=prod_reg_ok.php method=post encType=multipart/form-data>
<TABLE borderColor=midnightblue cellSpacing=2 cellPadding=2 width=580 bgColor=midnightblue border=0>
<TR>
<TD width=150 bgColor=lavender>상품 분류</TD>
<TD bgColor=white colSpan=3><SELECT onchange=setBrand(this.options[this.selectedIndex].value) name=pr_class>
<OPTION value=1 selected>fashion</OPTION>
<OPTION value=2>life</OPTION>
<OPTION value=3>gift</OPTION>
<OPTION value=4>ticket</OPTION>
</SELECT>
</TD>
</TR>
<TR>
<TD width=150 bgColor=lavender> 브랜드명</TD>
<TD bgColor=white colSpan=3>
<SELECT name=pr_brand>
<OPTION selected></OPTION>
</SELECT>
</TD>
</TR>
</TABLE>
</FORM>
댓글 2
-
steelheart
2002.08.06 14:23
-
myself2
2002.08.06 17:16
steelheart 님 답변 감사합니다..^^
덕분에 버그하나 잡았네요..^^;;
for(i=0; i<document.form.pr_brand.options.length; i++){
document.form.pr_brand.options[i] = null;
}
모두 지우고 다시 넣으려고 그렇게 하신 것 같은데요. 문제는 pr_brand.options.length가
일정하지 않다는데 있습니다. 즉 루프를 돌때마다 length의 값이 변합니다. 왜냐하면
루프안에서 옵션을 하나씩 지워줬기 때문이죠. 그래서 애당초 지울려고 계획한 수만큼을
지우지 못하고 for 문을 빠져 나가서 예전것이 남아있게 되버리네요...
음... 말재주가 없네요. 한번 차근차근 생각해 보시고... 제거하는 부분을 다음처럼
바꿔 주세요...
var objOption = document.form.pr_brand.options;
var len = objOption.length;
for (var i=0; i<len; i++) {
objOption.remove(0);
}