03property 和 attribute 的区别是什么?
【解析】propertyDOM节点就是一个JS对象,它符合之前讲述的对象的特征——可扩展属性,因为DOM节点本质上也是一个JS对象。因此,如下代码所示,p可以有style属性,有classNamenodeNamenodeType属性。注意,这些都是JS范畴的属性,符合JS语法标准的。varpList=document.querySelectorAll('p')varp=pList[0]console.log(p.style.width)//获取样式p.style.width='100px'//修改样式console.log(p.className)//获取classp.className='p1'//修改class//获取nodeName和nodeTypeconsole.log(p.nodeName)console.log(p.nodeType)attributeproperty的获取和修改,是直接改变JS对象,而attribute是直接改变HTML的属性,两种有很大的区别。attribute就是对HTML属性的get和set,和DOM节点的JS范畴的property没有关系。varpList=document.querySelectorAll('p')varp=pList[0]p.getAttribute('data-name')p.setAttribute('data-name','juejin')p.getAttribute('style')p.setAttribute('style','font-size:30px;')而且,get和setattribute时,还会触发DOM的查询或者重绘、重排,频繁操作会影响页面性能。
来自:jquery相关-API方法