我在页面中有以下内容
<select name="val" size="1" >
<option value="A">Apple</option>
<option value="C">Cars</option>
<option value="H">Honda</option>
<option value="F">Fiat</option>
<option value="I">Indigo</option>
</select>
如果某些条件为真,我想从我的选择中删除某些值。
E.g
if(frm.product.value=="F"){
// remove Apple and Cars from the select list
}
如何使用javascript
执行此操作答案 0 :(得分:30)
为select对象提供一个id,如下所示:
<select id="mySelect" name="val" size="1" >
<option value="A">Apple</option>
<option value="C">Cars</option>
<option value="H">Honda</option>
<option value="F">Fiat</option>
<option value="I">Indigo</option>
</select>
您可以使用纯JavaScript执行此操作:
var selectobject=document.getElementById("mySelect");
for (var i=0; i<selectobject.length; i++){
if (selectobject.options[i].value == 'A' )
selectobject.remove(i);
}
但是 - 正如其他答案所暗示的那样 - 使用jQuery或其他一些JS库要容易得多。
答案 1 :(得分:9)
检查JQuery解决方案here
$("#selectBox option[value='option1']").remove();
答案 2 :(得分:6)
使用纯javascript
var condition = true; // your condition
if(condition) {
var theSelect = document.getElementById('val');
var options = theSelect.getElementsByTagName('OPTION');
for(var i=0; i<options.length; i++) {
if(options[i].innerHTML == 'Apple' || options[i].innerHTML == 'Cars') {
theSelect.removeChild(options[i]);
i--; // options have now less element, then decrease i
}
}
}
未经IE测试(如果有人可以确认...)
答案 3 :(得分:2)
如果您使用的是JQuery,则如下所示:
为您的SELECT提供ID
<select name="val" size="1" id="val">
<option value="A">Apple</option>
<option value="C">Cars</option>
<option value="H">Honda</option>
<option value="F">Fiat</option>
<option value="I">Indigo</option>
</select>
$("#val option[value='A'],#val option[value='C']").remove();
答案 4 :(得分:2)
索引我将在删除第一个元素后立即更改。 此代码将从wifi通道组合框中删除值52-140
obj = document.getElementById("id");
if (obj)
{
var l = obj.length;
for (var i=0; i < l; i++)
{
var channel = obj.options[i].value;
if ( channel >= 52 && channel <= 140 )
{
obj.remove(i);
i--;//after remove the length will decrease by 1
}
}
}
答案 5 :(得分:2)
有人提到,删除选项时,select元素的长度会减少。如果您只想删除一个选项,这不是问题,但如果您打算删除多个选项,则可能会遇到问题。 有人建议在删除选项时手动减少索引。在我看来,手动减少for循环内的索引并不是一个好主意。这就是为什么我建议稍微不同的for循环,我们从后面遍历所有选项。
var selectElement = document.getElementById("selectId");
for (var i = selectElement.length - 1; i >= 0; i--){
if (someCondition) {
selectElement.remove(i);
}
}
如果您想删除所有选项,可以执行以下操作。
var selectElement = document.getElementById("selectId");
while (selectElement.length > 0) {
selectElement.remove(0);
}
答案 6 :(得分:1)
document.getElementById(this).innerHTML = '';
把它放在你的if-case里面。它的作用是检查文档中的当前对象并将其替换为空。你将首先在列表中循环,我猜你已经这样做了,因为你有这个。
答案 7 :(得分:1)
您可以使用:
if ( frm.product.value=="F" ){
var $select_box = $('[name=val]');
$select_box.find('[value=A],[value=C]').remove();
}
更新:如果您将选择框稍微修改为
<select name="val" size="1" >
<option id="A" value="A">Apple</option>
<option id="C" value="C">Cars</option>
<option id="H" value="H">Honda</option>
<option id="F" value="F">Fiat</option>
<option id="I" value="I">Indigo</option>
</select>
非jQuery解决方案就是这个
if ( frm.product.value=="F" ){
var elem = document.getElementById('A');
elem.parentNode.removeChild(elem);
var elem = document.getElementById('C');
elem.parentNode.removeChild(elem);
}
答案 8 :(得分:1)
if(frm.product.value=="F"){
var select = document.getElementsByName('val')[0];
select.remove(0);
select.remove(1);
}
答案 9 :(得分:1)
你必须转到它的父母并在javascript中从那里删除它。
“Javascript不会让一个元素自杀,但它确实允许杀婴”......:)
试试这个,
var element=document.getElementsByName(val))
element.parentNode.removeChild(element.options[0]); // to remove first option
答案 10 :(得分:1)
这应该这样做
document.getElementsByName("val")[0].remove(0);
document.getElementsByName("val")[0].remove(0);
检查小提琴here
答案 11 :(得分:1)
或者,您也可以使用 getElementsByName
来完成此操作<select id="mySelect" name="val" size="1" >
<option value="A">Apple</option>
<option value="C">Cars</option>
<option value="H">Honda</option>
<option value="F">Fiat</option>
<option value="I">Indigo</option>
</select>
因此,在匹配“C”的选项值时,我们可以从列表中删除汽车。
var selectobject = document.getElementsByName('val')[0];
for (var i=0; i<selectobject.length; i++){
if (selectobject.options[i].value == 'C' )
selectobject.remove(i);
}
答案 12 :(得分:1)
使用香草JavaScript的简单工作解决方案:
const valuesToRemove = ["value1", "value2"];
valuesToRemove.forEach(value => {
const mySelect = document.getElementById("my-select");
const valueIndex = Array.from(mySelect.options).findIndex(option => option.value === value);
if (valueIndex > 0) {
mySelect.options.remove(valueIndex);
}
});
答案 13 :(得分:0)
其他方式
document.querySelectorAll('#select option').forEach(i=>{
if(frm.product.value == i.value){
i.remove();
}else {}
})
答案 14 :(得分:0)
大多数答案中未提及的一些警告:
这些:
const eligibleOptions = ['800000002', '800000001'];
let optionsList = document.querySelector("select#edit-salutation");
for (let i = 1; i<optionsList.length; i++) {
if(eligibleOptions.indexOf(optionsList.options[i].value) === -1) {
cbxSal.remove(i);
i--;
}
}
答案 15 :(得分:0)
要删除按值选择的选项,我会这样做(在纯JS中):
[...document.getElementById('val').options]
.filter(o => o.value === 'A' || o.value === 'C')
.forEach(o => o.remove());
答案 16 :(得分:0)
最好的答案是这个
function f1(){
var r=document.getElementById('ms');
for(i=0;i<r.length;i++)
if(r.options[i].selected==true)
{
r.remove(i);
i--;
}
}
<select id="ms" size="5" multiple="multiple">
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
<option>E</option>
<option>F</option>
</select>
<input type="button" value="btn1" id="b1" onclick="f1()"/>
因为您的访客还可以根据需要添加自定义选项,并删除它们而无需任何有关其选项的信息。 该代码是响应速度最快的删除代码,您可以将其编写为所选的删除。
享受它:))))
答案 17 :(得分:0)
清除所有选项 重要en:删除(0)-重要:0
var select = document.getElementById("element_select");
var length = select.length;
for (i = 0; i < length; i++) {
select.remove(0);
// or
// select.options[0] = null;
}
答案 18 :(得分:-1)
删除选项
$("#val option[value='A']").remove();