我可以将非文本属性存储在 Javascript 中的 DOM 节点中吗
Can I store a non-text property in a DOM node in Javascript
我想将对象存储在 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
所以,这是我的替代建议:
生成一个唯一的字符串 - 简单的方法可能是 Date.now().toString()
除非你在循环中生成它们或其他东西。在这里使用最有效的方法。
有一个全局对象,比如说domdata = {};
赋值domdata[unique_string] = your_data_here;
保存node.setAttribute("data-dom-id",unique_string);
您现在可以通过以下方式检索数据:
获取unique_string = node.getAttribute("data-dom-id");
检索domdata[unique_string]
完成! :)
我想将对象存储在 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
所以,这是我的替代建议:
生成一个唯一的字符串 - 简单的方法可能是
Date.now().toString()
除非你在循环中生成它们或其他东西。在这里使用最有效的方法。有一个全局对象,比如说
domdata = {};
赋值
domdata[unique_string] = your_data_here;
保存
node.setAttribute("data-dom-id",unique_string);
您现在可以通过以下方式检索数据:
获取
unique_string = node.getAttribute("data-dom-id");
检索
domdata[unique_string]
完成! :)