我可以任意属性为JavaScript DOM对象,如添加<INPUT>或<SELECT>元素?或者,如果我不能这样做,有没有办法通过引用属性将我自己的对象与页面元素相关联?
med*_*iev 25
当然,人们已经做了很多年了.它不推荐,因为它很乱,你可能会搞乱现有的属性.
如果您使用for..in代码循环代码可能会中断,因为您现在将枚举这些新附加的属性.
我建议使用类似jQuery的东西.data来保持元数据附加到对象上.如果您不想使用库,请重新实现jQuery.data
And*_*y E 20
是的,您可以将自己的属性添加到DOM对象,但请记住要小心避免命名冲突和循环引用.
document.getElementById("myElement").myProperty = "my value";
Run Code Online (Sandbox Code Playgroud)
HTML5引入了一种通过标记将数据附加到元素的有效方法 - 使用data-属性前缀.您可以在HTML 4文档中使用此方法,也不会出现任何问题,但它们不会验证:
<div id="myElement" data-myproperty="my value"></div>
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方式通过JavaScript访问getAttribute():
document.getElementById("myElement").getAttribute("data-myproperty");
Run Code Online (Sandbox Code Playgroud)
Jam*_*mes 11
ECMAScript 6具有WeakMap,只要该对象存在,您就可以将私有数据与DOM元素(或任何其他对象)相关联.
const wm = new WeakMap();
el = document.getElementById("myelement");
wm.set(el, "my value");
console.log(wm.get(el)); // "my value"
Run Code Online (Sandbox Code Playgroud)
与其他答案不同,此方法可确保永远不会与任何属性或数据的名称发生冲突.
您要向对象添加属性,还是向元素添加属性?
您可以使用添加属性 setAttribute
var el = document.getElementById('myelement');
el.setAttribute('custom', 'value');
Run Code Online (Sandbox Code Playgroud)
或者您可以仅将属性添加到javascript对象:
var el = document.getElementById('myelement');
el.myProperty = 'myValue';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16395 次 |
| 最近记录: |