当前位置: 首页 > Web前端 > HTML

前端的Attribute&Property

时间:2023-04-02 22:45:37 HTML

为了表现出翻译上的区别,Attribute一般翻译成特征,Property翻译成属性。在上面的使用中,Angular表明了模板绑定使用属性和事件而不是属性的态度。模板绑定适用于属性和事件,而不适用于特性。jQuery中prop()和attr()如何选择,众说纷纭……两种主流观点:对于一些公认的属性和特性,使用setAttribute()。问题。红皮书作者推荐使用DOM属性,因为在浏览器上的表现更加一致。HTMLattribute&DOMproperty的关系和区别引用了Angular文档中的一段话总结了两者的关系和区别:HTMLattribute和DOMproperty的比较Attribute是由HTML定义的。属性由DOM(文档对象模型)定义。一些HTML属性和特性之间存在1:1的映射关系,例如id。有些HTML属性没有相应的属性,例如colspan。有些DOM属性没有相应的属性,例如textContent。一般原则:HTML属性初始化DOM属性,然后它们的工作就完成了。改变attribute的值相当于重新初始化DOM属性。改变属性值,属性值改变,属性值不变。几个有代表性的映射表HTMLattributeDOMpropertyididclassclassNamechecked='checked'checkedvalueistrue通用原理失效的情况为什么叫通用原理?在低版本的ie中,对DOM属性中的值进行了操作,属性中的值也发生了变化。完全不合理--更改HTML属性myInput.setAttribute('value','testAttr');浏览器myInput.getAttribute('value')myInput.valuechromeie11fftestAttrtestAttrie8testAttrtestAttr更改DOMpropertydocument.getElementById('myInput').value='testproperty';browsermyInput.getAttribute('value')myInput.valuechromeie11ff123testpropertyie8testproperty(一般123)测试属性prop()和attr()的选择prop()采用的是改变DOM属性的方法,基本对应改变DOM特性。原生DOMjQuery操作element.value$element.prop(name[,value])读写deleteelement.propertyName$element.removeProp(propertyName)deleteattr()采用的是改变HTML属性的方式,基本对应一个DOM中提供了三种操作属性的方法。原生DOMjQuery操作element.getAttribute(name)$element.attr(name)readelement.setAttribute(name,value)$element.attr(name,value)writedeleteelement.removeAttribute(name)$element.removeAttr(name)delete总结在获取标签上的一些自定义属性,或者一些基本不会改变的特性时,大多数情况下使用attr()(data-*等除外)。$('form').attr('user-my-name');//nilinli$('form').attr('action');//在test.php的其他情况下,操作DOM以与页面交互。通常,使用prop()。一般来说,尽量操作DOM属性,只有在没有DOM属性(自定义属性或没有相关映射)时,才操作HTML属性。