2013-11-15 2 views
0

국가 선택 메뉴가 있습니다.이 서버 측을 변경할 수 없습니다. 이전 사용자 선택에 따라 옵션 중 하나가 이미 선택되었습니다.자바 스크립트로 선택 메뉴에서 일치하는 옵션 제거

또한 메뉴에 표시 할 국가를 지정하는 국가 코드 목록 (서버 측 생성)도 있습니다. (대부분 제거해야합니다.)

나는 다음 스크립트를 생각해 냈고 왜 작동하지 않는지 알 수 없습니다. 나는 (I가 필요하다) 아무것도하지 않는

countrymenu.options[i].disabled = true; 

하지만

countrymenu.remove[i]; 

으로 원치 않는 국가를 비활성화 할 수 있습니다.

도움을 주시면 감사하겠습니다.

<html> 
    <head> 
     <script type="text/javascript"> 
      function HideCountries() 
      { 
       countrymenu = document.checkoutform.country_code; 

       for (var i = 0; i < countrymenu.length; i++) 
       { 
        if (/^ASM|AIA$/.test(countrymenu.options[i].value)==false) 
        { 
         countrymenu.remove[i]; 
        } 
       } 
      } 

      window.onload=HideCountries; 
     </script> 
    </head> 
    <body> 
     <form name="checkoutform"> 
      <select name="country_code" id="country_code"> 
       <option value="AFG">Afghanistan</option> 
       <option value="ALA">&Aring;land Is.</option> 
       <option value="ALB">Albania</option> 
       <option value="DZA">Algeria</option> 
       <option value="ASM">American Samoa</option> 
       <option value="AND">Andorra</option> 
       <option value="AGO">Angola</option> 
       <option value="AIA">Anguilla</option> 
       <option value="ATA" selected="selected">Antarctica</option> 
      </select>  
      <input type="submit" /> 
     </form> 
    </body> 
</html> 

답변

0

remove() 기능이 잘못되었지만 항목을 제거하면 색인이 바뀌기 때문에 역순으로 항목을 제거해야합니다.

http://jsfiddle.net/MrPolywhirl/gPY3p/

function hideCountries() { 
    countrymenu = document.getElementsByName('country_code')[0] 
    for (var i = countrymenu.length-1; i >= 0; i--) { 
     if (/^ASM|AIA$/.test(countrymenu.options[i].value) == false) { 
      countrymenu.remove(i); 
     } 
    } 
} 

window.onload = hideCountries(); 

이는 떠나야한다 :

  • 아메리칸 사모아
  • 앵 귈라을
0

remove은 기능입니다. 정규 괄호로 호출됩니다.

countrymenu.remove(i); 

remove[i]

배열로서의 기능을 사용하도록 시도한다. 이 작업은 실패하므로 아무 일도 일어나지 않습니다. 또한 코드를 정지시키는 오류가 발생할 수도 있습니다.

관련 문제