【发布时间】:2020-02-22 21:06:30
【问题描述】:
我正在尝试基于 JavaScript 中的 2d 网格构建游戏。
在嵌套的 for 循环中,我这样设置单元格的数据属性:
cell.setAttribute('data-pos',[i,j]);
在我的事件处理程序中,我得到如下数据:
let pos = event.target.getAttribute('data-pos');
当我尝试访问 pos 的元素时,发生了一些奇怪的事情。
对于具有data-pos 或[1, 3] 的单元格,
当我使用console.log:时得到以下值
pos[0] = 1
pos[1] = ,
pos[2] = 3
不知何故,逗号被视为数组元素。
这是为什么以及如何正确地将 i 和 j 的值传递给事件处理程序?
【问题讨论】:
-
您已经对数组进行了字符串化。我真的不建议像这样在 DOM 中存储状态,因为您将对其进行序列化和反序列化。建议使用数据结构重新设计。你能显示minimal reproducible example吗?谢谢!
-
我是怎么做到的?
let pos = event.target.getAttribute('data-pos');在没有引号的情况下给出错误。 -
DOM中的属性总是字符串——如果你把
[i,j]这样的数组放入setter,JS会为你调用[i,j].toString()。
标签: javascript arrays dom-events