有没有开发使用setAttribute而不是dot(.)属性表示法的最佳实践?
例如:
myObj.setAttribute("className", "nameOfClass");
myObj.setAttribute("id", "someID");
Run Code Online (Sandbox Code Playgroud)
要么
myObj.className = "nameOfClass";
myObj.id = "someID";
Run Code Online (Sandbox Code Playgroud) 问题是是否使用属性或属性.
没有发现这个记录,所以进行了一些测试(铬12):
property <=>属性
accept, alt, formMethod, formTarget, id, name, placeholder, type, maxlength, size form: method, name, target, action, enctype
property <= attribute
value, autofocus, checked, disabled, formNoValidate, multiple, required
property =>属性
indeterminate
propetry> <属性
defaultValue, validity, defaultChecked, readOnly form: novalidate
给出一个随机属性/值来应用于一个元素,这里是我提出的最好的规则(根据Tim Down(谢谢!)修改):
if class,write with classList,read with classNameproperty
如果一个表单,总是使用属性读取(并且要小心)
如果typeof element[propName] != "undefined",使用财产,即,element[attr]=val
否则,使用属性,即 element.setAttribute(attr,val)
这甚至接近正确吗?
注意:有趣的是,如果你有一个名为"novalidate"的元素的表单,是否可以访问novalidate表单本身的属性?
我只是想知道两者之间有什么区别.我注意到这两种方法有时会产生不同的结果.
我正在玩获取link标记的属性,似乎有几种方法来访问属性:
document.getElementsByTagName("link")[0]['media']
document.getElementsByTagName("link")[0].media
document.getElementsByTagName("link")[0].getAttribute('media')
document.getElementsByTagName("link")[0].attributes['media']
Run Code Online (Sandbox Code Playgroud)
它接近于荒谬的相同数据有多少路径.这些方法中的一种远远优于其他方法吗?