用于从下拉列表中删除选项的Javascript

时间:2015-05-08 15:43:41

标签: javascript drop-down-menu options

我有一个下拉列表,其中包含我从调试窗口中获取的以下html代码。它是黑盒子中的代码,我无法达到。在此网页中,我想使用javascript删除选项,如果它不是以' SS'开头。我该怎么做?

<select id="prgid" special="lists.specprog" name="UF-003054-1">
<option value=""> </option>
<option value="5488">SS Twain CE</option>
<option value="5487">Twain IS</option>
</Select>

我正在做这样的事情,这是行不通的。请帮忙。

var select=document.getElementById('prgid');
            for (i=0;i<select.length;  i++) {
                var prg = select.options[i].value;
                if (!prg.substring,0,3) == 'SS ') { 
                 select.remove(i);
               }
            }

4 个答案:

答案 0 :(得分:0)

你有正确的想法。试试这个:

var select = document.getElementById('prgid');
for (var i in select.children) {
    if (select.children[i].innerHTML.match('SS') !== 0) {
        select.children[i].outerHTML = '';
    }
}

http://jsfiddle.net/howderek/35vagg9u/

答案 1 :(得分:0)

你关闭了,你错过了几件事

var prg = select.options[i].value;
//should be
var prg = select.options[i].text;

应该使用.text,因为.value将返回5488和5487,。text将返回&#34; SS Twain CE&#34;和&#34;吐温IS&#34;

你的子串方法没有正确格式化,应该是

if (prg.substring(0, 3) != 'SS ')

全部放在一起

var select=document.getElementById('prgid');
for (i=0;i<select.length;  i++) {
    var prg = select.options[i].text;
    if (prg.substring(0, 3) != 'SS ') { 
       select.remove(i);
    }
}

答案 2 :(得分:0)

var select=document.getElementById('prgid');
for (i=0;i<select.length;  i++) {
    var prg = select.options[i].text;
    if (prg.substring(0,3) == 'SS ') { 
        select.remove(i);
    }        
}

使用上面的javascript。 您必须使用select.options[i].text来获取选项文本。但是,如果您使用.value将为您提供选项值。并查看.substring()

的语法

有关代码参考,请参阅jsFiddle

答案 3 :(得分:0)

好吧,howderek已经发布了一个很好的工作替代方案,但是为了更好地理解出错的原因,可能需要发布一个固定版本的代码。你非常接近!

只有几个失误:

if语句中的条件:

!prg.substring,0,3) == 'SS '

应该是:

prg.substring(0,3) != 'SS '

您错误地调用了substring()函数,而且!运算符的位置会导致您将字符串布尔值与字符串进行比较,而不是将字符串与字符串进行比较(这是在这种情况下你想要的是什么。)

此外,由于您实际上是在访问选项的文本而不是其值,因此您应该使用select.options[i].text;而不是select.options[i].value;

您生成的JavaScript将如下所示:

var select = document.getElementById('prgid');
for (i = 0; i < select.length; i++) {
    var prg = select.options[i].text;
    if (prg.substring(0, 3) != 'SS ') {
        select.remove(i);
    }
}

这是一个JSFiddle来演示 - 请注意所有不以“SS”开头的选项是如何删除的。

希望这有帮助!如果您有任何问题,请告诉我。