Javascript DOM:设置自定义DOM元素属性

ram*_*ion 18 javascript dom

是否可以在DOM元素上设置自定义属性,并依赖它们持久化?

例如,给定

 <html><body><div id="foo"></div></body></html>
Run Code Online (Sandbox Code Playgroud)

这样做是否公平document.getElementById('foo').bar = "baz";,并期望document.getElementsByTagName('div')[0].bar相等"baz"

请注意,我在这里谈论的是属性,就像普通的javascript对象属性一样,而不是元素属性.

我对它是如何跨浏览器感兴趣,以及它是否支持任何规范.

DOM API是否保证每次都会为同一个DOM元素返回相同的javascript对象?

Rob*_*obG 6

作为一般规则,请勿使用自定义属性.您不应该以他们不期望的方式修改DOM对象,因为它们可能不会按照您的想法行事.

HTML5中自定义属性的机制是使用数据前缀.

但是,HTML5并不是一个标准,并没有广泛实现.但如果您使用设置/的getAttribute数据-属性,它应该对所有合理的现代浏览器工作,并没有标准的属性应在未来一推出数据-前缀.

但话虽如此,我仍然建议使用自定义对象来存储值并通过元素id或其他标准(如HTML 4.01)属性值引用它们.它避免了自定义属性和属性的问题,并且已知可以在任何地方使用.


Šim*_*das 5

嗯,有dataset属性:

div.dataset.bar = 'baz';
Run Code Online (Sandbox Code Playgroud)

但它没有在 IE 中实现。

现场演示: http : //jsfiddle.net/simevidas/dJr2u/