我正在寻找有关我设计 Javascript/SVG 界面的编码技术的反馈。我是这些语言的新手,因为我最近放弃了 Adobe Flex 的专长。
该软件将是一个通用接口,用于将源信号映射到目标信号。连接由网格表示,行/列代表源/目标信号:
XXXX | 目的地A XOXX | 目的地B XXXX | 目的地C XXXX | 目的地 D --------- 1 2 3 4
在这个美丽的图中,“0”表示源“信号 2”映射到“目标 B”。
我关心将数据(连接对象)绑定到视图(SVG 元素)。我是这样做的:
数据存储在二维数组中:connections[nSources][mDestinations]
在视图中,对于二维连接数组中的每个项目,我创建一个 SVG 元素,其 ID 为“celln,m”(“n,m”对应于它的行/列索引)并将其添加到 DOM。我发现这是访问任何 SVG 元素的一种非常简单的方法,通过使用 document.getElementById(...),或者通过解析“evt.target.id”字符串来查找用户单击的行/列。
第一次实施效果很好。但我很担心,因为接口需要支持处理动态数据......源/目标信号将即时添加或删除。用户可以重新排列行和列。并且它需要支持将信号分组到可扩展和可折叠的节点中。
一个简单的例子:如果在索引 0 处添加新行,我需要更新每个 SVG 元素的 ID 以将其行增加 1。
我的具体问题:这么多地操作 DOM 元素的 ID 是否可以(良好做法、安全和可靠)?
要查看代码示例(操作 SVG 元素 ID 的函数),请参见此处: 示例
在 200x200(例如)的网格中,在索引 0 处添加一行意味着更改 40,000 个 SVG 元素的 ID,这似乎很可怕。有没有人看到这有问题?