我有<select>
元素 a 具有不同的 option
s。加载页面时,我想存储这些option
s 作为备份(我正在使用 window.onload
执行此操作)。
现在用户更改<select>
元素 b,删除一些 option
位于<select>
元素a。在 <select>
上进行一些其他更改后元素b,我想恢复option
元素 a 的 s 以及我从启动时的备份。
但无论如何,option
上的变化s 似乎适用于两个数组。
我已使用 new Array
创建了备份数组和push
编辑 option
中的每个s 到新数组中。我希望这可以防止它们在从 DOM 中删除时也从数组中删除。
有什么提示可以解决这个问题吗?
<小时/>function cacheOptions() {
backupOptions = newArray(document.getElementById("selectElement").options);
}
function newArray(oldArray) {
var newArray = new Array(oldArray.length);
for ( var object in oldArray) {
newArray.push(object);
}
return newArray;
}
并删除option
位于 onchange
方法...
document.getElementById("selectElement").options[i].remove();
最佳答案
- 切勿使用
for in
循环数组;使用普通的for
循环 - 您可以使用
arr = []
创建一个数组;长度将自动设置 - 您将旧数组的索引附加到新数组;不是他们的值(value)观
无论如何,您可以使用[].slice.call(arr)
从类似数组的对象中获取数组。
因此,您最好摆脱 newArray
函数,并将 cacheOptions
函数更改为:
function cacheOptions() {
backupOptions = [].slice.call(document.getElementById("selectElement").options);
}
关于javascript - 使用 DOM 对象创建备份数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8169775/