我有一个贝宝选择,我有不同的选择。我想只选择一个选项并删除其余选项。为此,我得到了这段代码:
var selectobject=document.getElementById("os0"); //this is the select
for (var i=0; i<selectobject.length; i++){
if (selectobject.options[i].value != <?php echo $people; ?> ){
selectobject.remove(i);
alert(i);
}
}
这是从paypal中选择的,
<input type="hidden" name="on0" value="people">people</td></tr><tr><td><select name="os0" id="os0">
<option id="1" value="1">1 €123,97 EUR</option>
<option id="2" value="2">2 €249,94 EUR</option>
<option id="3" value="3">3 €371,91 EUR</option>
<option id="4" value="4">4 €495,88 EUR</option>
<option id="5" value="5">5 €619,85 EUR</option>
<option id="6" value="6">6 €743,82 EUR</option>
<option id="7" value="7">7 €867,79 EUR</option>
<option id="8" value="8">8 €991,76 EUR</option>
<option id="9" value="9">9 €1.115,73 EUR</option>
<option id="10" value="10">10 €1.239,70 EUR</option>
</select>
所以发生的事情是超级奇怪,它只删除了paar数字,只计算到5或6,结果如果我发送例如1个人是:
如果我选择2个人:
我也有警告告诉我在哪里&#34;我&#34;它只是上升到5或4,不明白。
答案 0 :(得分:4)
当您移除i
处的选项时,您将所有其他选项拖垮;现在,下一个选项是i
。但是,因为你正在使用for
循环,你正在递增i
- 并且你在删除选项后从未查看过该选项。
相反,如果不删除该选项,请使用while
循环并仅增加i
。
var selectobject = document.getElementById("os0"); //this is the select
var i = 0;
while (i < selectobject.length) {
if (selectobject.options[i].value != <?php echo $people; ?> ){
selectobject.remove(i);
alert(i);
} else {
++i;
}
}
使用3
(没有alert
)的实例:
var people = 3;
var selectobject = document.getElementById("os0"); //this is the select
var i = 0;
while (i < selectobject.length) {
if (selectobject.options[i].value != people){
selectobject.remove(i);
} else {
++i;
}
}
<select name="os0" id="os0">
<option id="1" value="1">1 €123,97 EUR</option>
<option id="2" value="2">2 €249,94 EUR</option>
<option id="3" value="3">3 €371,91 EUR</option>
<option id="4" value="4">4 €495,88 EUR</option>
<option id="5" value="5">5 €619,85 EUR</option>
<option id="6" value="6">6 €743,82 EUR</option>
<option id="7" value="7">7 €867,79 EUR</option>
<option id="8" value="8">8 €991,76 EUR</option>
<option id="9" value="9">9 €1.115,73 EUR</option>
<option id="10" value="10">10 €1.239,70 EUR</option>
</select>