pra*_*ora 2 javascript setattribute
这两者之间有什么区别,
b1.setAttribute('id','b1');
Run Code Online (Sandbox Code Playgroud)
和
b1.id='b1';
Run Code Online (Sandbox Code Playgroud)
是其中一个比另一个更有效?并且他们两个会完成相同的任务吗?他们在某些情况下会有所不同吗?
setAttribute和htmlElement.attribute ='value'之间的区别
后一点,htmlElement.attribute='value'不太准确.你没有在那里设置属性,你正在设置一个属性.
内存中的DOM元素实例具有各种属性,其中一些属性连接到属性或与属性相关,而其他属性则没有.
另一方面,属性是从HTML标记直接读取的名称/值对(如果序列化DOM元素,例如通过访问其innerHTML属性,则写入您获得的标记).
当属性和属性以某种方式相关/链接时,该属性称为(属性的)反射属性.有时,反射属性的名称与属性的名称(class变为className,for变为htmlFor)不完全相同,有时它们之间的链接不是1:1.
因此,例如,id属性的反射id属性.但是选择框有一个selectedIndex没有属性的属性.
他们俩都会完成同样的任务吗?
他们在某些情况下会有所不同吗?
这取决于属性/属性:
id和其他几个直接反映:设置id属性和设置id属性完全相同.另外,htmlFor属性/ for属性也是如此(除了那里有bug的旧IE setAttribute),rel属性/属性,className/ class属性(旧IE上除了那里有bug setAttribute),name表单字段上的属性和一些其他元件时,method和action性质/属性的形式,和其他几个人.
该value物业,而另一方面,不设置value属性可言.它只是从中获取默认值.大多数浏览器("都"在这一点?),有一个单独的defaultValue属性,它不直接反映value属性.
该href属性href与相对于绝对链接的属性略有不同.该属性可以包含相对路径,并使用str = elm.getAttribute("href")给出相对路径; 如果你读取属性(str = elm.href),它将始终是一个绝对路径(例如,已解析的路径).将href属性设置为相对路径会将属性设置为该路径,但再次读取teh href属性将为您提供绝对(已解决)版本.将href属性设置为绝对路径会将属性设置为该绝对路径.
有几个布尔属性表示为布尔值(true/false),但由于属性值始终是字符串,因此该属性要么不是 false(getAttribute返回null),要么是true.如果它在那里,它必须具有""与其名称相同的值(例如,multiple="multiple"不区分大小写),尽管在实践中浏览器将任何当前属性视为true与其实际内容无关.
有些属性根本没有反映在属性中,因此设置它们不会设置/更改任何属性.
是其中一个比另一个更有效?
它永远不会给照顾带来足够大的差异,所以没关系.它也可能因浏览器而异.