我有<select>
元素 a ,其中option
个不同。加载页面时,我想将这些option
存储为备份(我正在使用window.onload
执行此操作。)
现在,用户更改了<select>
元素 b ,这会删除option
元素 a 中的一些<select>
。在对<select>
元素 b 进行其他一些更改后,我想要从启动时使用我的备份恢复元素 a 的option
。
但无论如何,option
上的更改似乎都适用于两个数组。
我已经使用new Array
创建了备用arrray,并push
将每个option
编辑到新数组中。我希望这可以防止它们在从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();
答案 0 :(得分:0)
for in
循环数组;使用正常的for
循环arr = []
制作数组;长度将自动设定无论如何,你可以使用[].slice.call(arr)
从类似数组的对象中获取数组。
因此,您最好摆脱newArray
函数,并将cacheOptions
函数更改为:
function cacheOptions() {
backupOptions = [].slice.call(document.getElementById("selectElement").options);
}