Array() 中的 getElementById() 正在覆盖数组中的其他元素
getElementById() in an Array() is overwriting other elements in the array
我觉得这应该有一个非常简单的答案,但我仍然挠头,谷歌没有帮助。我正在尝试在数组中存储有关元素的信息。但是在谷歌浏览器中,当我设置有关第二个元素的信息时,它会覆盖第一个元素。以下是代码的简化版本:
<!DOCTYPE HTML>
<html>
<head>
<script>
var $box = new Array();
$box['test'] = new Array();
function load(){
$box['test'][document.getElementById('box')] = true;
$box['test'][document.getElementById('boxinfo')] = false;
console.log('box: ' + $box['test'][document.getElementById('box')]); // box: false // Should be true
console.log('boxinfo: ' + $box['test'][document.getElementById('boxinfo')]); // boxinfo: false // Should be false
console.log(document.getElementById('box') == document.getElementById('boxinfo')); // false // Should be false
}
</script>
</head>
<body onload="load();">
<div id="box">
<div id="boxinfo">BoxInfo</div>
Box
</div>
</body>
</html>
我怎样才能做到
$box['test'][document.getElementById('box')] // is true
$box['test'][document.getElementsByTagName('div')[0]] // is true
$box['test'][document.getElementById('boxinfo')] // is false
做的时候
foo[ bar ] = someValue;
bar
将转换为 String 值,然后将其用作属性名称(正在分配给该名称)。在您的情况下,您的 DOM 元素将转换为字符串,例如 '[object HTMLDivElement]'
.如果两个元素都是 DIV,它们将被转换为相同的 String 值,这就是第二个赋值覆盖第一个赋值的原因,即两个赋值都分配给同一个属性。
您要实现的目标不能用简单的数组来实现。
相关文章:
- 在函数中添加数组元素的数值
- 访问JSON对象内部的数组元素
- 用于检查数组中是否存在元素的javascript自定义方法
- 在数组中的一个元素上设置多个值
- 从组件状态的数组中删除元素
- Mongoose-在更新中删除数组元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 数组中元素(字符串)的总和
- javascript数组元素是否知道其封闭数组
- 查找数组javascript中包含的元素类型
- 如何在javascript上向数组的对象添加新元素
- 如果数组仍在执行,async.forEach()将运行我添加到数组中的新元素
- 使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript
- 一些元素没有从数组中删除
- JS.循环遍历多维数组,以计数元素在每列中的出现次数
- 将数组元素附加到FormData dos'不适用于Firefox 15
- 元素不会添加到Javascript数组中
- 如何从另一个带下划线的数组中筛选带元素的数组
- 如何将函数应用于两个数组的第 n 个元素(数组的数组)
- Js接受两个值之间的元素(数组)