【问题标题】:Javascript for removing options from dropdown list用于从下拉列表中删除选项的 Javascript
【发布时间】:2015-05-08 15:43:41
【问题描述】:

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

<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);
               }
            }

【问题讨论】:

    标签: javascript drop-down-menu options


    【解决方案1】:

    你的想法是对的。试试这个:

    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/

    【讨论】:

      【解决方案2】:
      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】:

      好吧,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”开头的选项是如何被删除的。

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

      【讨论】:

        【解决方案4】:

        你已经很接近了,你只是错过了几件事

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

        应该使用 .text,因为 .value 将返回 5488 和 5487,.text 将返回“SS Twain CE”和“Twain IS”​​

        而且你的子字符串方法格式不正确,应该是

        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);
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2016-07-24
          • 2021-12-17
          • 2017-02-16
          • 1970-01-01
          • 2020-11-13
          • 2014-05-24
          • 1970-01-01
          • 2014-08-28
          • 2021-05-24
          相关资源
          最近更新 更多