我有一个下拉列表,其中包含我从调试窗口中获取的以下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);
}
}
答案 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 = '';
}
}
答案 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”开头的选项是如何删除的。
希望这有帮助!如果您有任何问题,请告诉我。