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

时间:2013-11-15 11:08:27

标签: javascript forms removechild

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

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

我已经提出了以下脚本,并且无法理解为什么它不起作用。我可以使用

禁用不需要的国家/地区
  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>

2 个答案:

答案 0 :(得分:0)

remove是一个功能。用常规括号调用它。

countrymenu.remove(i);

remove[i]尝试将该函数用作数组。这失败了,所以没有任何反应。此外,它可能会导致错误停止代码。

答案 1 :(得分: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();

这应该只留下:

  • 美属萨摩亚
  • 安圭拉