Javascript 动态设置/获取自定义属性

Javascript 动态设置/获取自定义属性,javascript,cross-browser,dynamic,custom-attributes,Javascript,Cross Browser,Dynamic,Custom Attributes,除IE系列外,现代主流浏览器都支持动态设置/检索自定义属性。如何在所有浏览器中设置/获取自定义属性 这就是我迄今为止所尝试的: HTML: 或 在这两种情况下,IEalert()返回null我在IE7/8上测试了您的代码 var myInput = document.getElementById('myInput'); myInput.setAttribute('custom-attr', 'custom-value'); alert(myInput.getAttribute('custom-a

除IE系列外,现代主流浏览器都支持动态设置/检索自定义属性。如何在所有浏览器中设置/获取自定义属性

这就是我迄今为止所尝试的:

HTML:


在这两种情况下,IE
alert()
返回
null

我在IE7/8上测试了您的代码

var myInput = document.getElementById('myInput');
myInput.setAttribute('custom-attr', 'custom-value');
alert(myInput.getAttribute('custom-attr'));
而且运行良好。这个简单的测试用例对你来说失败了吗,或者你真的在做一些不同的事情吗

可以使用括号表示法

var myInput = document.getElementById('myInput');
myInput['custom-attr'] = 'custom-value';
alert(myInput['custom-attr']);
var myInput = document.getElementById('myInput');
myInput.customAttr = 'custom-value';
alert(myInput.customAttr);
如果名称中没有
-
,可以使用点表示法

var myInput = document.getElementById('myInput');
myInput['custom-attr'] = 'custom-value';
alert(myInput['custom-attr']);
var myInput = document.getElementById('myInput');
myInput.customAttr = 'custom-value';
alert(myInput.customAttr);

您的代码在IE6、IE7、IE8、FF、Chrome、Opera上运行良好。

这些实际上不是属性;它们是属性。有一个注释可以帮助你在谷歌上找到更多信息:这个功能叫做“expando属性”。实际上,我并不认为你的第一个代码有什么问题。在MSIE 6.0和8.0中试用过,正确显示“自定义值”。
var myInput = document.getElementById('myInput');
myInput.customAttr = 'custom-value';
alert(myInput.customAttr);