实现两个选择框的代码,之前由于对js不熟,写的代码不够精练
重构之前(下面这段代码是我从别的代码重构过来的,那个代码代码简直就是垃圾,就不贴了):
/*
srcSelect: source select,
destSelect: destination select,
destMaxLength: max length of destination select
*/
function changeRelative(srcSelect, destSelect, destMaxLength){
for (var i=0; i<srcSelect.length; i++){
if(destMaxLength!=null && destSelect.length >= destMaxLength){
return;
}
var selectedOption = srcSelect.options[i];
if (selectedOption.selected == true){
destSelect.add(new Option(selectedOption.text, selectedOption.value));
srcSelect.remove(i);
//set selected item
if(i==srcSelect.length){//select first
srcSelect.selectedIndex=0;
}else{//select next
srcSelect.selectedIndex=i;
}
break;
}
}
}
重构之后
/*
srcSelect: source select,
destSelect: destination select,
destMaxLength: max length of destination select
*/
function changeRelative(srcSelect, destSelect, destMaxLength){
if(destMaxLength!=null && destSelect.length >= destMaxLength){
return;
}
var srcSelectedIndex = srcSelect.selectedIndex;
if(srcSelectedIndex != -1){
var srcSelectedOption = srcSelect.options[srcSelectedIndex];
destSelect.add(new Option(srcSelectedOption.text, srcSelectedOption.value));
srcSelect.remove(srcSelectedIndex);
//set next selected item
if(srcSelectedIndex == srcSelect.length){//select first option
srcSelect.selectedIndex=0;
}else{//select next option
srcSelect.selectedIndex=srcSelectedIndex;
}
}
}