本文详解为何直接遍历 selectedOptions 并动态移除选项会导致“只移动偶数索引项”的 Bug,并提供稳定、兼容性好、无需第三方库的原生 JavaScript 修复方案。
本文详解为何直接遍历 `selectedoptions` 并动态移除选项会导致“只移动偶数索引项”的 bug,并提供稳定、兼容性好、无需第三方库的原生
java
script 修复方案。
在实现双列表选择器(如“可用人员 ⇄ 已选人员”)时,一个常见却极易被忽视的陷阱是:
在 for 循环中直接对正在遍历的 DOM 集合执行 appendChild() 操作,会实时改变集合结构,导致跳过相邻元素
。
根本原因在于:sourceSelect.selectedOptions 是一个
实时更新的 HTMLCollection(类数组对象)
,而非静态快照。当你将第 0 个