亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

《DOM編程藝術(shù)》中初步實(shí)現(xiàn)的圖片庫的總結(jié)(二)

阿羅 / 3455人閱讀

摘要:前言在編程藝術(shù)中初步實(shí)現(xiàn)的圖片庫的總結(jié)一中,有很多不足之處比如事件處理嵌套在中,顯得如此笨重和屌絲沒有對(duì)函數(shù)進(jìn)行相應(yīng)的安全檢查等,本篇文章對(duì)上述問題做了全面的升級(jí)。

前言:在《DOM編程藝術(shù)》中初步實(shí)現(xiàn)的圖片庫的總結(jié)(一)中,有很多不足之處:比如事件處理嵌套在HTML中,顯得如此笨重和屌絲;沒有對(duì)showPic函數(shù)進(jìn)行相應(yīng)的安全檢查等,本篇文章對(duì)上述問題做了全面的升級(jí)。
--------------------開始---------------------

1.首先要把HTML部分進(jìn)行改造

去掉嵌套在HTML中的事件處理代碼,并且為了js能操作

    標(biāo)簽,需要對(duì)
      標(biāo)簽添加ID屬性值

          

      電影天堂

      hehehe

      選擇一張圖片

      2.獲取
        標(biāo)簽中的節(jié)點(diǎn)a,遍歷并且綁定事件處理
            function prepareFilm(){
                if(!document.getElementsByTagName){
                    return false;
                }
                if(!document.getElementById){
                    return false;
                }
                if(!document.getElementById("filmlist")){
                    return false;
                }
                var list = document.getElementById("filmlist");
                var links = list.getElementsByTagName("a");
                for(var i = 0; i
        3.本例非必需:共享onload事件
        

        本例中必須執(zhí)行prepareFilm函數(shù)才能對(duì)onclick事件進(jìn)行綁定,但是這個(gè)函數(shù)又不能在HTML文檔加載之前執(zhí)行,網(wǎng)頁加載完畢時(shí)會(huì)觸發(fā)一個(gè)onload事件,但是需要執(zhí)行的函數(shù)有多個(gè)逐一添加又麻煩,而且后續(xù)的函數(shù)會(huì)覆蓋上一個(gè),所以就有必要封裝一個(gè)addLoadEvent函數(shù)把將要執(zhí)行的函數(shù)作為參數(shù)傳進(jìn)去,

            //共享onlond事件,封裝成一個(gè)函數(shù),@func是頁面加載時(shí)需要執(zhí)行的那個(gè)函數(shù)。
            //如果window.onload在頁面加載時(shí)還沒有綁定任何函數(shù),就把需要執(zhí)行的函數(shù)添加給它、
            //如果這個(gè)處理函數(shù)已經(jīng)綁定了函數(shù),就把新函數(shù)追加到現(xiàn)有指令的末尾
            function addLoadEvent(func){
                //把現(xiàn)有的window.onload存入變量oldonload
                var oldonload = window.onload;
                if(typeof window.onload != "function"){
                    window.onload = func;
                }else{
                    window.onload = function(){
                        oldonload();
                        func();
                    }
                }
            }

        但是這個(gè)時(shí)候還有一些bug,就是沒有對(duì)showPic函數(shù)進(jìn)行必要的安全檢查,而showPic函數(shù)要被prepareFilm函數(shù)調(diào)用,假如它獲取不到圖片呢?

        4.對(duì)showPic函數(shù)進(jìn)行安全檢查
            function showPic(whichpic){
                if(!document.getElementById("placeholder")) return false;
                var source = whichpic.getAttribute("href");
                var placeholder = document.getElementById("placeholder");
                placeholder.setAttribute("src" , source);
                if(document.getElementById("description")){
                    var text = whichpic.getAttribute("title");
                    var description = document.getElementById("description");
                    description.firstChild.nodeValue = text;  
                }
                return true;
            }

        但是還是有問題,就是此時(shí)prepareFilm函數(shù)做了一個(gè)假設(shè):showPic函數(shù)肯定會(huì)正常返回,基于這一假設(shè),prepareFilm函數(shù)在執(zhí)行showPic函數(shù)時(shí)就會(huì)提前返回一個(gè)true,從而取消了onclick事件的默認(rèn)行為。所以是否要返回一個(gè)false值取消onclick默認(rèn)行為,應(yīng)該由showPic函數(shù)決定,圖片切換成功返回true,圖片切換失敗,返回false。
        所以此時(shí)應(yīng)該把prepareFilm函數(shù)最后兩句改為:return !showPic(this);

        5.添加更多的檢查 (1)假設(shè)每個(gè)鏈接都有title屬性,假如不存在把text值設(shè)置為空; (2)placeholder是否存在?假設(shè)那是一張圖片(本例中它確實(shí)是圖片),為了驗(yàn)證這個(gè)情況,可以用nodeName屬性增加這一項(xiàng)測(cè)試。

        下面是添加更多的檢查之后的showPic函數(shù)代碼:

            function showPic(whichpic){
                if(!document.getElementById("placeholder")) return false;
                var source = whichpic.getAttribute("href");
                var placeholder = document.getElementById("placeholder");
                if(placeholder.nodeName != "IMG") return false;
                placeholder.setAttribute("src" , source);
                if(document.getElementById("description")){
                    var text = whichpic.getAttribute("title")?whichpic.getAttribute("title"):"";
                    var description = document.getElementById("description");
                    if(description.firstChild.nodeType == 3){
                        description.firstChild.nodeValue = text; 
                    } 
                }
                return true;
            }
        6.調(diào)用addLoadEvent函數(shù)
            //在頁面加載完成后調(diào)用prepareFilm函數(shù)
            addLoadEvent(prepareFilm);
        7.完整代碼

        老規(guī)矩,上完整源碼

        
        
        
        
            
            example
            
        
        
        
            

        電影天堂

        hehehe

        選擇一張圖片

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/79684.html

相關(guān)文章

  • DOM編程藝術(shù)初步實(shí)現(xiàn)片庫總結(jié)(一)

    摘要:灰姑娘灰姑娘灰姑娘不足點(diǎn)擊事件綁定在代碼中,很笨重,下一篇中將做升級(jí)。 前言:在《DOM編程藝術(shù)》一書中,作者給出了一個(gè)實(shí)例:創(chuàng)建一個(gè)圖片庫,其實(shí)功能很簡(jiǎn)單,就是點(diǎn)擊某個(gè)列表項(xiàng)時(shí),下方出現(xiàn)相應(yīng)的圖片以及圖片說明(圖片說明事先以title的形式寫在HTML中),雖然是一個(gè)簡(jiǎn)單的例子,當(dāng)時(shí)作者在書中循序漸進(jìn),不斷的改善圖片庫中間引入各種知識(shí)點(diǎn),真的是一本好書,在此對(duì)這個(gè)實(shí)例進(jìn)行一些總結(jié)。 ...

    Yi_Zhi_Yu 評(píng)論0 收藏0
  • DOM事件總結(jié)(一)

    摘要:三級(jí)事件處理程序級(jí)事件定義了兩個(gè)方法,分別用于處理指定和刪除事件處理程序的操作和,他們都接收三個(gè)參數(shù)要處理的事件名作為事件處理程序的函數(shù)一個(gè)布爾值。布爾值如果是表示在捕獲階段調(diào)用事件處理程序,如果是表示在冒泡階段調(diào)用事件處理程序。 前言:擼完CSS-DOM緊接著來擼DOM事件,事件總結(jié)完成后我要開始總結(jié)動(dòng)畫,然后用純JS實(shí)現(xiàn)一個(gè)輪播圖,前路漫漫,還有各種框架等著我~~~本篇主要內(nèi)容有:...

    hedge_hog 評(píng)論0 收藏0
  • DOM編程藝術(shù)CSS—DOM總結(jié)

    摘要:部分這是一個(gè)表格月日北京路號(hào)人民廣場(chǎng)月日南京路號(hào)人民博物館月日上海路號(hào)人民藝術(shù)中心部分要美觀,還是稍微寫點(diǎn)樣式吧代碼部分思路就是獲取到所有的,然后遍歷,并對(duì)做樣式修改。 前言:接上篇,本篇有兩個(gè)內(nèi)容:一個(gè)是Demo:當(dāng)鼠標(biāo)hover到表格的一行上時(shí)這行表格字體加粗。。。好了,廢話少說,開始?。?! ------------------嚴(yán)肅的分割線------------------ 1....

    amc 評(píng)論0 收藏0
  • DOM編程藝術(shù)CSS—DOM總結(jié)

    摘要:部分這是一個(gè)表格月日北京路號(hào)人民廣場(chǎng)月日南京路號(hào)人民博物館月日上海路號(hào)人民藝術(shù)中心部分要美觀,還是稍微寫點(diǎn)樣式吧代碼部分思路就是獲取到所有的,然后遍歷,并對(duì)做樣式修改。 前言:接上篇,本篇有兩個(gè)內(nèi)容:一個(gè)是Demo:當(dāng)鼠標(biāo)hover到表格的一行上時(shí)這行表格字體加粗。。。好了,廢話少說,開始?。?! ------------------嚴(yán)肅的分割線------------------ 1....

    yangrd 評(píng)論0 收藏0
  • DOM編程藝術(shù)CSS—DOM總結(jié)(三)

    摘要:前言這是系列最后一篇,本文主要總結(jié)了的用法,以及最后對(duì)函數(shù)進(jìn)行抽象。一個(gè)多說無益,還是上代碼來得實(shí)在還記得編程藝術(shù)中的總結(jié)一中那個(gè)無聊的根據(jù)元素在節(jié)點(diǎn)樹里的位置來設(shè)置樣式的吧現(xiàn)在可以用屬性直接更改樣式了。 前言:這是CSS-DOM系列最后一篇,本文主要總結(jié)了className的用法,以及最后對(duì)函數(shù)進(jìn)行抽象。 ------------------我是分割線----------------...

    王巖威 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<