87,910
社区成员
发帖
与我相关
我的任务
分享
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
}
}
}
这个解决方案,可以,使用者可以从左到右,退回,反复选择,直到满意为止。
例如:
第一轮:选择一,选择二,选择三
第二轮:回过头去,选择二,选择三
第三轮:回过头去从来,选择一,选择二,选择三
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]);
}
}
}
}