html 多个下拉框有相同的数据,选中一个数据其他下拉框删除这个数据,用js怎么实现?哪位大侠帮个忙呀!!

定个小目标 2013-03-04 05:32:11
<BODY>
<div align="center">两个下拉框你只能选择不同的值<br>
<select id="Color_1" onChange="ddlChange1(this.value);">
<option selected value=''>你的WEB编程语言</option>
<option value='ASP'>ASP</option>
<option value='PHP'>PHP</option>
<option value='JSP'>JSP</option>
<option value='CGI'>CGI</option>
</select>
<select id="Color_2" onChange="ddlChange2(this.value);">
<option selected value=''>你的WEB编程语言</option>
<option value='ASP'>ASP</option>
<option value='PHP'>PHP</option>
<option value='JSP'>JSP</option>
<option value='CGI'>CGI</option>
</select>
<select id="Color_3" onChange="ddlChange3(this.value);">
<option selected value=''>你的WEB编程语言</option>
<option value='ASP'>ASP</option>
<option value='PHP'>PHP</option>
<option value='JSP'>JSP</option>
<option value='CGI'>CGI</option>
</select>
</div>
</BODY>
...全文
450 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jswatcher 2013-03-04
  • 打赏
  • 举报
回复
引用 1 楼 bbjbepzz 的回复:
…… function removeOption(index , v){ …… obj.removeChild(options[j]); …… } ……
1 楼 的方案的问题是,当再次在第一个下拉框选择不同的值后,第二个下拉框的选择就丢失了一个(在第一轮选择时被removeChild给消除了!)。所以这里不能消除,只能隐藏。具体如下,

function ddlChange1(v){
	displayOptions(2, [v]);
	displayOptions(3, [v]);
	ddlChange1.hiddenOption = v;  // keep the hidden value for ddlChange2
}

function ddlChange2(v){
	displayOptions(3, [ddlChange1.hiddenOption, v]);
}

function ddlChange3(v){
}

function displayOptions(selectIndex, hiddenOptions){
	// Get select element
	var el = document.getElementById('Color_' + selectIndex);
	el.value = '';
	
	var i;
	
	// Prepare hidden option set
	var hSet = {};
	for (i=0; i<hiddenOptions.length; i++) {
		hSet[hiddenOptions[i]] = true;
	}
	
	// hide the hidden options and show the others
	var ops = el.options;
	for(i=0 ; i < ops.length ; ++i) {
		if(hSet[ops[i].value]){				
			ops[i].style.display = "none"; // hide
		} else {
			ops[i].style.display = "";     // show
		}
	}
}
这个解决方案,可以,使用者可以从左到右,退回,反复选择,直到满意为止。 例如: 第一轮:选择一,选择二,选择三 第二轮:回过头去,选择二,选择三 第三轮:回过头去从来,选择一,选择二,选择三
bbjbepzz 2013-03-04
  • 打赏
  • 举报
回复

function ddlChange1(v){
	/*xxxx*/
	removeOption(2,v);
}
function ddlChange2(v){
	/*xxxx*/
	removeOption(3,v);	
}
function ddlChange3(v){
	/*xxxx*/
}
function removeOption(index , v){
	var obj , options;
	for(var i = index ; i <= 3 ; ++i){
		obj = document.getElementById('Color_' + i);		
		options = obj.options;
		for(var j = 0 ; j < options.length ; ++j){
			if(options[j].value == v){				
				obj.removeChild(options[j]);
			}
		}
	}
}

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧