js怎么实现能多选的下拉框,点一个选中一个,反选取消选择?我的程序有问题,超过两条选择就不对了!

<script>//选中项数组varselect=[];//根据value,更改项的选中状态functionchangeOption(opt,val,isSelect){... <script>
//选中项数组
var select = [];

//根据value,更改项的选中状态
function changeOption(opt,val,isSelect) {
for (var i = 0; i < opt.length; i++) {
if (opt.options[i].value == val) {
opt.options[i].selected = isSelect;
break;
}
}
}

function OnClick() {
var i_ts_desc = document.getElementById("i_ts_desc");
//获取当前选择Value
var newVal = i_ts_desc.options[i_ts_desc.selectedIndex].value;
for (var i = 0; i < select.length; i++) {
//如果Value在数组中,即反选了,就不选中它。
if (select[i] == newVal) {
//不选中
changeOption(i_ts_desc, newVal, false);
//再将原来的项选中
for (var k = 0; k < select.length; k++) {
if (select[k] != newVal)
changeOption(i_ts_desc, select[k], true);
}
//重新填充已选中的项的数组
select = [];
for (var j = 0; j < i_ts_desc.options.length; j++) {
if (i_ts_desc.options[j].selected == true) {
select.push(i_ts_desc.options[j].value);
}
}
return;
}
}

//选中,然后重新填充已选中的项的数组
select.push(newVal);
for (var i = 0; i < select.length; i++) {
changeOption(i_ts_desc, select[i], true);
}

}
</script>
<select id="i_ts_desc" multiple="multiple" onclick="OnClick();" >
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
<option value="F">F</option>
</select>
展开
 我来答
流香羽
2011-01-21 · TA获得超过1540个赞
知道小有建树答主
回答量:925
采纳率:50%
帮助的人:1355万
展开全部
Hi,你的操作就是当已经选择过的情况下你需要删除掉数组的相应值。
我帮你改写了一下,数组值需要存储选框的下标就可以了的。

<script language="javascript">
var sel = [];
function OnClick() {
var i_ts_desc = document.getElementById("i_ts_desc");
var index = i_ts_desc.selectedIndex;
var iHas = -1;
sel.sort();
for (var i = 0; i < sel.length; i++) {
if (sel[i] == index) {
iHas = i;
} else {
i_ts_desc[sel[i]].selected = true;
}
}
if (iHas == -1) {
sel.push(index);
i_ts_desc[index].selected = true;
} else {
sel.splice(iHas, 1);
i_ts_desc[index].selected = false;
}
}
</script>
<select id="i_ts_desc" multiple="multiple" onclick="OnClick();" >
<option value="A">0</option>
<option value="B">1</option>
<option value="C">2</option>
<option value="D">3</option>
<option value="E">4</option>
<option value="F">5</option>
</select>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式