Это очень долгий путь!: -)
Вы можете переместить параметр из одного выбора в другой, просто назначив его в качестве дочернего элемента другого выбора, например,
function move(sens) {
var i, sourceSel, targetSel;
if (sens == 'right') {
sourceSel = document.getElementById('selectBoxOne');
targetSel = document.getElementById('selectBoxSecond');
} else {
sourceSel = document.getElementById('selectBoxSecond');
targetSel = document.getElementById('selectBoxOne');
}
i = sourceSel.options.length;
while (i--) {
if (sourceSel.options[i].selected) {
targetSel.appendChild(sourceSel.options[i]);
}
}
}
переместит все выбранные параметры из одного вдругой.Обратите внимание, что цикл while идет в обратном направлении, поскольку коллекция options представляет собой живой NodeList, поэтому удаление параметров сокращает коллекцию.Если вы идете вперед через него, вам нужно обновлять индекс и длину по мере того, как вы идете (поэтому возвращаться назад проще).
Возможно, вы захотите включить какой-либо порядок или сортировку (например, по значению или тексту).
Полагаю, если установлен флажок selectAll , вы просто переместите их все или (предпочтительно) вы можете использовать прослушиватель щелчков, чтобы выбрать / отменить выбор всех соответствующих оптоинов, когда он независимыйфункции move .