Javascript DOM : Setting custom DOM element properties

标签 javascript dom

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

例如,给定

 <html><body><div id="foo"></div></body></html>

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

请注意,我在这里谈论的是普通 javascript 对象属性中的属性,而不是元素属性。

我对它是如何跨浏览器以及它是否在任何规范中都支持感兴趣。

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

最佳答案

作为一般规则,不要使用自定义属性。您不应该以他们不期望的方式修改 DOM 对象,因为它们的行为可能不会像您认为的那样。

自定义机制属性 在 HTML5 中是使用 data-字首。

然而,HTML5 并不是一个标准,也没有得到广泛的实现。但是,如果您将 set/getAttribute 用于 data- 属性,它应该适用于所有相当现代的浏览器,并且将来不应引入带有 data- 前缀的标准属性。

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

关于Javascript DOM : Setting custom DOM element properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7895560/

相关文章:

javascript - 如何在回调中访问正确的“this”?

javascript - 使用 Vanilla JS 在父级中仅查找父级 DIV,然后查找子级 DIV

javascript - 多个父节点在 Internet Explorer 7 中不起作用

javascript - 当参数值发生变化时如何运行函数?

javascript - 关于客户端安全性,除了颠覆同源策略之外,CORS 还会做其他事情吗?

javascript - 添加加载后调整 iframe 的大小

javascript - 为元素设置属性

java - 解析巨大的XML文件形成DOM树

javascript - 如何使用php读取html中标签的id?

javascript - 如何模拟 JEST 中 SUT 中使用的方法上使用的装饰器函数