5 回答
TA贡献22条经验 获得超29个赞
1,for (var i = 0; i < attr.length; i++) { ,,,,,attr.length 这个是属性的长度, 这个for循环是为了遍历获取的元素所有属性。
2,然后写了个正则,if(/^data-/.test(attr[i].nodeName)){以data开头的属性如果存在。用nodeName获取其属性名。如果成功执行,那么
3,attr[i].nodeName.slice(5)截取掉5个字符也就是data-。然后toLowerCase()都转成小写。
4,replace(/-(.)/g,function(match,p1){
return p1.toUpperCase()}); //获取自定义属性名称,并按camel语法改写
}
match 所匹配成功的字符串。
p1 通过(.)获取的第一个字符。并return成大写
5,dataset[name]=attr[i].nodeValue; 把匹配到的属性的值放到dataset对象中
TA贡献3条经验 获得超8个赞
朋友,这段循环不难理解,我相信分开来说你一下子就明白了,attr.length 表示数组的长度,就是 attr数组中有几个元素;attr[i].nodeName表示获取当前的这个元素的节点名,/^data-/是正则表达式,将会匹配data-,.slice(5)获取元素的第六到最后一个字母,.toLowerCase()变为小写,p1.toUpperCase()将p1变为大写,然后把/-(.)/g替换了。如果要理解清楚,还要知道变量的含义的
添加回答
举报