使用javascript从选择菜单中删除匹配的选项

使用javascript从选择菜单中删除匹配的选项,javascript,forms,removechild,Javascript,Forms,Removechild,我有一个国家/地区的选择菜单(我无法更改此服务器端)。根据以前的用户选择,其中一个选项已被选中 我还有一个国家代码列表(也是服务器端生成的),它指定了应该出现在菜单中的国家。(大部分应移除。) 我已经想出了下面的脚本,但不明白为什么它不起作用。我可以使用 countrymenu.options[i].disabled = true; 但是 (这就是我需要的)什么都不做 任何帮助都将不胜感激 <html> <head> <script t

我有一个国家/地区的选择菜单(我无法更改此服务器端)。根据以前的用户选择,其中一个选项已被选中

我还有一个国家代码列表(也是服务器端生成的),它指定了应该出现在菜单中的国家。(大部分应移除。)

我已经想出了下面的脚本,但不明白为什么它不起作用。我可以使用

  countrymenu.options[i].disabled = true;
但是

(这就是我需要的)什么都不做

任何帮助都将不胜感激

<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>

函数HideCountries()
{
countrymenu=document.checkoutform.country\u代码;
对于(变量i=0;i
删除
是一项功能。它用普通括号调用

countrymenu.remove(i);

remove[i]
尝试将函数用作数组。这失败了,所以什么也没发生。它还可能导致停止代码的错误。

尽管您的
remove()
功能不正确,但您也应该按相反的顺序删除项目,因为一旦删除项目,索引就会移动

这应该只剩下:

  • 美属萨摩亚
  • 安圭拉
countrymenu.remove(i);
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();