從一行代碼里面學(xué)點javascript

[].forEach.call($$("*"),function(a){
 a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16)
})
  • 選擇頁面中所有的元素
    我們需要做的第一件事情是獲取頁面中所有的元素楼镐,在上面的代碼中攀隔,Addy使用了一個Chrome瀏覽器中特有的函數(shù)$$撕贞。你可以在你的Chrome瀏覽器控制臺中輸入$$('a')唆涝,然后你就能得到一個當前頁面中所有錨元素的列表。

$$函數(shù)是許多現(xiàn)代瀏覽器命令行API中的一個部分萝究,它等價于document.querySelectorAll,你可以將一個CSS選擇器作為這個函數(shù)的參數(shù)母廷,然后你就能夠獲得當前頁面中所有匹配這個CSS選擇器的元素列表。如果你在瀏覽器控制臺以外的地方糊肤,你可以使用document.querySelectorAll('')來代替$$('')琴昆。更多關(guān)于$$函數(shù)的詳細內(nèi)容可以查看Chrome開發(fā)者工具的文檔。

當然馆揉,除了使用$$函數(shù)之外业舍,我們還有一種更簡單的方法,document.all升酣,雖然這并不是一種很規(guī)范的使用方法舷暮,但是它幾乎在每一個瀏覽器中都能運行成功。

  • 迭代所有的元素
    經(jīng)過第一步噩茄,我們已經(jīng)獲得了頁面內(nèi)所有的元素下面,現(xiàn)在我們想做的事情是遍歷每一個元素,然后為它們添加一個彩色邊邊框绩聘。但是上面的代碼究竟是怎么一回事呢沥割?

    [].forEach.call( $$('*'), function( element ) { /* 在這里修改顏色 */ });

首先耗啦,我們通過選擇器獲得的列表是一個NodeLists對象,它和javascript中的數(shù)組有點像机杜,你可以使用方括號來獲取其中的節(jié)點帜讲,你也可以檢查它其中包含多少個元素,但是它并沒有實現(xiàn)數(shù)組包含的所有方法椒拗,因此我們并不能使用$$('*').forEach()來進行迭代似将。在javascript中,有好幾個類似于數(shù)組但是并不是數(shù)組的對象蚀苛,除了前面的NodeLists在验,還有函數(shù)的參數(shù)集合arguments,在這里我們可以使用call或apply函數(shù)將函數(shù)的方法運用到這些對象上堵未。

  • 為元素添加顏色
    為了讓元素都有一個漂亮的邊框腋舌,我們在上面的代碼中使用了CSS屬性outline。outline屬性位于CSS盒模型之外兴溜,因此它并不影響元素的屬性或者元素在布局中的位置侦厚,這對于我們來說非常有用。這個屬性和修改border屬性非常類似拙徽,因此下面的代碼應(yīng)該不會很難理解:

     a.style.outline="1px solid #" + color
    

真正有趣的地方在于定義顏色部分:

  ~~(Math.random()*(1<<24))).toString(16)

更多參考 來自http://sentsin.com/web/881.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刨沦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子膘怕,更是在濱河造成了極大的恐慌想诅,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岛心,死亡現(xiàn)場離奇詭異来破,居然都是意外死亡,警方通過查閱死者的電腦和手機忘古,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門徘禁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人髓堪,你說我怎么就攤上這事送朱。” “怎么了干旁?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵驶沼,是天一觀的道長。 經(jīng)常有香客問我争群,道長回怜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任换薄,我火速辦了婚禮玉雾,結(jié)果婚禮上翔试,老公的妹妹穿的比我還像新娘。我一直安慰自己抹凳,他們只是感情好遏餐,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布伦腐。 她就那樣靜靜地躺著赢底,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柏蘑。 梳的紋絲不亂的頭發(fā)上幸冻,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音咳焚,去河邊找鬼洽损。 笑死,一個胖子當著我的面吹牛革半,可吹牛的內(nèi)容都是我干的碑定。 我是一名探鬼主播迅脐,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼铡买,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了极谊?” 一聲冷哼從身側(cè)響起六敬,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤碘赖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后外构,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體普泡,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年审编,在試婚紗的時候發(fā)現(xiàn)自己被綠了撼班。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡垒酬,死狀恐怖砰嘁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伤溉,我是刑警寧澤般码,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站乱顾,受9級特大地震影響板祝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜走净,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一券时、第九天 我趴在偏房一處隱蔽的房頂上張望孤里。 院中可真熱鬧,春花似錦橘洞、人聲如沸捌袜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虏等。三九已至,卻和暖如春适肠,著一層夾襖步出監(jiān)牢的瞬間霍衫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工侯养, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留敦跌,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓逛揩,卻偏偏與公主長得像柠傍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辩稽,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348