使用DOM对象创建备份数组

时间:2011-11-17 15:30:21

标签: javascript arrays dom select options

我有<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();

1 个答案:

答案 0 :(得分:0)

  1. 永远不要使用for in循环数组;使用正常的for循环
  2. 您可以使用arr = []制作数组;长度将自动设定
  3. 您将旧数组的索引附加到新数组;不是他们的价值观
  4. 无论如何,你可以使用[].slice.call(arr)从类似数组的对象中获取数组。

    因此,您最好摆脱newArray函数,并将cacheOptions函数更改为:

    function cacheOptions() {
        backupOptions = [].slice.call(document.getElementById("selectElement").options);
    }