javascript - 使用 DOM 对象创建备份数组

标签 javascript arrays dom select

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

最佳答案

  1. 切勿使用 for in 循环数组;使用普通的 for 循环
  2. 您可以使用arr = []创建一个数组;长度将自动设置
  3. 您将旧数组的索引附加到新数组;不是他们的值(value)观

无论如何,您可以使用[].slice.call(arr)从类似数组的对象中获取数组。

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

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

关于javascript - 使用 DOM 对象创建备份数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8169775/

相关文章:

javascript - Vue2 从循环组件中的子项调用父方法

javascript - 数据表翻译不起作用

javascript - 为什么正则表达式构造函数需要双重转义?

dom - 如何在 Chrome 开发者工具中使用 XPath 或 CSS 选择器搜索 DOM 元素?

javascript - 将以下 jQuery 代码转换为 YUI 2.x 代码

php - iFrame PHP 页面检查调用的来源 (referrer)

c# - 在 C# 中的列表中使用数组

php - 将发布的 PHP 数组插入 MYSQL

c# - 如何在 C# 中提取对象类型数组的元素?

javascript - JQuery:如何查找当前元素之后的元素