亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一段js感覺完全看不懂.求大神解釋

一段js感覺完全看不懂.求大神解釋

熠熠生陽 2016-02-15 15:25:34
for?(var?i?=?0;?i?<?attr.length;?i++)?{ ? ? ? ? ? ?????????????if(/^data-/.test(attr[i].nodeName)){ ? ? ? ? ? ? ?//匹配自定義屬性????????????????var?name=attr[i].nodeName.slice(5).toLowerCase().replace(/-(.)/g,function(match,p1){????????????????????return?p1.toUpperCase()}); ? ? ? ?//獲取自定義屬性名稱,并按camel語法改寫????????????}????????????dataset[name]=attr[i].nodeValue; ? ? ? ? ? ? ? //獲取自定義屬性的值,并加入dataset對象中????????}
查看完整描述

5 回答

已采納
?
_da

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對象中



查看完整回答
6 反對 回復 2016-02-15
?
_da

TA貢獻22條經驗 獲得超29個贊

(.)代表任意字符

查看完整回答
2 反對 回復 2016-02-15
?
Just90

TA貢獻3條經驗 獲得超8個贊

朋友,這段循環不難理解,我相信分開來說你一下子就明白了,attr.length 表示數組的長度,就是 attr數組中有幾個元素;attr[i].nodeName表示獲取當前的這個元素的節點名,/^data-/是正則表達式,將會匹配data-,.slice(5)獲取元素的第六到最后一個字母,.toLowerCase()變為小寫,p1.toUpperCase()將p1變為大寫,然后把/-(.)/g替換了。如果要理解清楚,還要知道變量的含義的

查看完整回答
2 反對 回復 2016-02-15
?
圓蔥

TA貢獻2條經驗 獲得超4個贊

我只是來讓好友看見我

查看完整回答
1 反對 回復 2016-02-15
  • 5 回答
  • 1 關注
  • 2267 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號