javascript - 我可以在 Javascript 的 DOM 节点中存储非文本属性吗

标签 javascript dom setattribute getattribute

我想用 Javascript 将对象存储在 DOM 节点的自定义属性中。我试过 setAttribute/getAttribute,但它们会将属性转换为文本。

假设我已经完成了

node = document.getElementById( 'SAMPLE' );
object = { test: function( ){ stuff; } };

这在我测试过的任何地方都不起作用

node.setAttribute( 'info', object );
val = node.getAttribute( 'info' ) ;

因为它给 val 留下了一个字符串值。

如果我这样做

node[ 'info' ] = object;

然后

val = node[ 'info' ];

稍后在我的脚本中返回我的对象​​。

这能在旧版 IE 等 HTML5 之前的浏览器中运行吗?安全吗?

最佳答案

You can "attach" it as a property, but that's not a good idea. – RobG

所以,这是我的替代建议:

  1. 生成一个唯一的字符串 - 简单的方法可能是 Date.now().toString() 除非您在循环中生成它们。使用此处最有效的任何方法。

  2. 有一个全局对象,比如 domdata = {};

  3. 分配 domdata[unique_string] = your_data_here;

  4. 保存node.setAttribute("data-dom-id",unique_string);

您现在可以通过以下方式检索数据:

  1. 获取unique_string = node.getAttribute("data-dom-id");

  2. 检索domdata[unique_string]

完成! :)

关于javascript - 我可以在 Javascript 的 DOM 节点中存储非文本属性吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27771666/

相关文章:

javascript - 如何在 AngularJs 指令中使用 Controller ?

javascript - setAttribute 的问题

javascript - 页面上有 'use' 标签,但我找不到 'def' 标签

javascript - 在屏幕中央显示 jQuery 的日期选择器

javascript - 使同一行上的 div 具有相同的高度 - 动态内容

jQuery 子选择器表达式

javascript - 将 nsIDOMHTMLSelectElement 作为函数参数传递会导致异常

javascript - 修改 DOM 后如何确保 DOM 再次准备就绪

svg - %tagElement% 上的 href 的命名空间前缀 NS1 未定义,setAttributeNS

javascript - 函数内部循环不会将内容附加到父级