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替換了。如果要理解清楚,還要知道變量的含義的
添加回答
舉報