亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

原生JS實現-星級評分系統的簡單實例

2019-11-20 09:11:12
字體:
來源:轉載
供稿:網友

今天我又寫了個很酷的實例:星級評分系統(可自定義星星個數、顯示信息)
sufuStar.star();
使用默認值5個星星,默認信息

var msg = [........];
sufuStar.star(10,msg);

自定義星星個數為10、顯示信息msg格式參考默認值,條數必須和星星個數一致;

自己實現一些實例,有個好處,能增加應用各知識點的熟練度,還能檢驗出自己的薄弱項!一經發現,立即翻API文檔惡補!

不知道是不是我太笨,這個實例居然寫了整整一天!

不廢話了,先說下這個實例涉及的知識點:

1.用CSS的border來畫個三角形,并用before來把它加到其它元素上;

2.學習如何用CSS來定位元素;

3.學習事件的代理;

4.如何優化性能;

5.String對象的match方法的應用,正則表達式的應用;

6.注冊事件與事件處理,需要兼容IE的寫法;

7.學習如何利用‘||'給變量設置默認值;

8.簡化代碼:將可能要重復寫的代碼拿出來,單獨寫成一個函數;

下面是帶注釋的完整代碼,碰到不懂得就查文檔吧,以我目前的水平只能寫成這樣了,若有好的建議,歡迎前輩指出!

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title></title>  <style>    *{      margin: 0;      padding: 0;    }    #star{      position: absolute;      left: 0;      right: 0;      top: 30px;      bottom: 0;      margin: auto;      width: 80%;      font-size: 12px;    }    #star-div{      margin:5px;      font-size: 0;    }    #star-div a{      display: inline-block;      width: 21px;      height: 21px;      background: url(http://files.cnblogs.com/files/susufufu/star0.gif) no-repeat;    }    #star-div .on{      background: url(http://files.cnblogs.com/files/susufufu/star1.gif) no-repeat;    }    #star-info{      position: absolute;      top: 55px;      left: -30px;      display: none;      width: 155px;      height: 50px;      padding: 2px;      line-height: 17px;      border-radius: 8px;      background-color: gold;      z-index: 5;    }    #star-info:before{      content: '';      border-bottom: 10px solid gold;      border-left: 10px solid rgba(0,0,0,0);      border-right: 10px solid rgba(0,0,0,0);      position: absolute;      left: 35px;      top: -10px;    }    #star-span{line-height: 14px}    #star-info strong,#star-span strong{      color: red;    }  </style>  <script>    window.onload = function(){      var sufuStar = function (){        //工具函數        function gbyId(id){return document.getElementById(id);}        function addEvent(elem,type,func){ //兼容IE          if(elem.addEventListener){            elem.addEventListener(type,func,false)          }else if(elem.attachEvent){            elem.attachEvent('on'+type,func)          }        }        function getIndex(event) { //兼容IE          var e = event || window.event;          var t = e.target || e.srcElement;          if (t.tagName.toLowerCase() === 'a') {            return parseInt(t.innerHTML);          }        }        function showInfo(index,msg){          var info = gbyId('star-info');          info.style.display = 'block';          info.style.left = index*21-51+'px';          info.innerHTML = "<strong> "+index+'分 '+msg[index-1].match(/(.+)/|/)[1]+'<br />'+'</strong>'+msg[index-1].match(//|(.+)/)[1];        }        function appenStar(elem,nums){          var frag = document.createDocumentFragment(); //為了提高性能,因使用DocumentFragment一次性append,這樣頁面只重新渲染一次          for(var i = 0;i<nums;i++){            var a =document.createElement('a');            a.innerHTML = i+1;            a.href = "javascript:;"; //阻止瀏覽器的點擊鏈接的默認行為            frag.appendChild(a);          }          elem.appendChild(frag);        }        //主體函數        function star(num,myMsg){          var n = num||5; //當num有值則取其值,無值則取默認值5;          var clickStar=curentStar=0; //clickStar保存點擊狀態          var msg = myMsg||[            "很不滿意|差得太離譜,與賣家描述的嚴重不符,非常不滿",            "不滿意|部分有破損,與賣家描述的不符,不滿意",            "一般|質量一般,沒有賣家描述的那么好",            "滿意|質量不錯,與賣家描述的基本一致,還是挺滿意的",            "非常滿意|質量非常好,與賣家描述的完全一致,非常滿意"          ];          var starContainer = gbyId('star-div');          appenStar(starContainer,n);          addEvent(starContainer,'mouseover',over); //采用事件代理模式(通過<a>標簽的父元素starContainer來代理事件)          addEvent(starContainer,'mouseout',out);          addEvent(starContainer,'click',click);          function over(event){            if(getIndex(event)){ //若getIndex(event)取不到值,說明當前觸發事件的目標不是<a>標簽              var index = getIndex(event);              change(index);              showInfo(index,msg);            }          }          function out(event){            change(); //將評分設為已點擊狀態clickStar            gbyId('star-info').style.display = 'none'          }          function click(event) {            if (getIndex(event)) {              var index = getIndex(event);              clickStar = index; //保存點擊狀態              gbyId('star-info').style.display = 'none';              gbyId('star-span').innerHTML = "<strong>" + index + '分 ' + msg[index - 1].match(/(.+)/|/)[1] + '</strong>'+'<br />'+ msg[index - 1].match(//|(.+)/)[1];            }          }          function change(index){            curentStar = index||clickStar;            for(var i=0;i<n;i++){              starContainer.children[i].className = i<curentStar ? 'on' : ''            }          }        }        return {          star:star        }      }(); //這里的()表示函數立即執行,這樣變量sufuStar才能調用匿名函數的返回值star      //調用執行: sufuStar.star(num,myMsg),參數可為空,參數num,myMsg將設為默認值      sufuStar.star();    }  </script></head><body><div id="star">  <span>點擊星星打分:</span>  <div id="star-div">  </div>  <span id="star-span"></span>  <p id="star-info">  </p></div></body></html>

以上這篇原生JS實現-星級評分系統的簡單實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线精品国产欧美| 97视频在线观看免费高清完整版在线观看| 久久成人一区二区| 国产精品高潮呻吟久久av黑人| 亚洲成年网站在线观看| 日本欧美精品在线| 久久久亚洲精选| 欧美大人香蕉在线| 国产成人精品a视频一区www| 国产精品第100页| 狠狠做深爱婷婷久久综合一区| 97精品国产97久久久久久免费| 精品视频—区二区三区免费| 亚洲国产精品字幕| 亚洲国产精品99久久| 亚洲精品电影网在线观看| 欧美在线亚洲在线| 亚洲人精品午夜在线观看| 久久久伊人欧美| 日韩国产欧美精品一区二区三区| 亚洲欧洲日产国产网站| 日韩禁在线播放| 亚洲国产精彩中文乱码av在线播放| 欧美成人精品不卡视频在线观看| 欧美午夜影院在线视频| 国产69精品久久久久9| 韩国v欧美v日本v亚洲| 这里只有精品丝袜| 精品亚洲精品福利线在观看| 岛国av在线不卡| 欧美视频在线观看免费| 精品久久久久久中文字幕| 日韩av免费看网站| 久久人人爽人人爽人人片av高请| 26uuu久久噜噜噜噜| 国产精品1区2区在线观看| 日本在线观看天堂男亚洲| 亚洲美女视频网站| xxx一区二区| 欧美日韩福利在线观看| 国产成人福利视频| 久久国产精彩视频| 国产日韩欧美在线播放| 68精品久久久久久欧美| 欧美在线视频免费观看| 久久久女人电视剧免费播放下载| 九九热视频这里只有精品| 欧美精品videosex性欧美| 91网在线免费观看| 欧美成人亚洲成人| 26uuu另类亚洲欧美日本老年| 亚洲精品福利在线| 亚洲欧洲视频在线| 成人国产精品久久久| 91成人在线播放| 97成人精品视频在线观看| 欧美性感美女h网站在线观看免费| 日韩电影在线观看免费| 久久久最新网址| 国产精品99久久99久久久二8| 精品国产成人av| 亚洲欧美中文在线视频| 国产精品丝袜高跟| 97精品久久久中文字幕免费| 欧美第一黄网免费网站| 亚洲日韩中文字幕| 国产精品三级在线| 日本成熟性欧美| www.欧美三级电影.com| 亚洲第一偷拍网| 欧美日本亚洲视频| 亚洲精品中文字幕有码专区| 日韩免费av在线| 久久精品国产成人精品| 亚洲精品少妇网址| 亚洲国产欧美一区二区三区同亚洲| 亚洲欧美中文日韩v在线观看| 久久久国产一区二区三区| 精品露脸国产偷人在视频| 欧美老女人www| 亚洲激情久久久| 一本大道久久加勒比香蕉| 91亚洲永久免费精品| www.欧美精品一二三区| 色99之美女主播在线视频| 欧美日韩精品在线观看| 欧美专区在线视频| 久久精品国产亚洲精品2020| 亚洲欧美国产精品va在线观看| 91精品国产高清久久久久久91| 亚洲一区二区三区久久| 国产中文字幕日韩| 亚洲美女喷白浆| 激情懂色av一区av二区av| 欧美人在线视频| 国产精品7m视频| 亚洲精品欧美一区二区三区| 亚洲男人7777| 亚洲精品国产精品国产自| 国产精品羞羞答答| 欧美中文在线视频| 精品视频在线播放| 亚洲伊人成综合成人网| 欧美日韩加勒比精品一区| 欧美性xxxxx极品娇小| 日韩在线不卡视频| 日韩精品在线私人| 中文字幕亚洲无线码在线一区| 美女精品视频一区| 97涩涩爰在线观看亚洲| 国产精品视频99| 国模gogo一区二区大胆私拍| 色香阁99久久精品久久久| 欧美日韩成人在线观看| 日本精品免费一区二区三区| 欧美一区二区色| 国产日韩欧美在线播放| 日韩高清人体午夜| 精品国内亚洲在观看18黄| 亚洲黄色www| 日韩一区二区在线视频| 欧美日韩色婷婷| 国产视频综合在线| 亚洲自拍偷拍色图| 日韩av黄色在线观看| 日韩欧美一区视频| 国产精品美女主播在线观看纯欲| 成人伊人精品色xxxx视频| 亚洲女性裸体视频| 日韩在线观看免费高清| 日韩美女在线观看| 国产精品精品久久久久久| 日韩欧美高清在线视频| 国产一区二区在线播放| 国产亚洲免费的视频看| 亚洲精品国产精品国自产观看浪潮| 一区二区三区精品99久久| 久久久久久国产精品三级玉女聊斋| 992tv在线成人免费观看| 8090成年在线看片午夜| 最新中文字幕亚洲| 国产精品一区久久久| 成人黄色大片在线免费观看| 国产精彩精品视频| 久久精品青青大伊人av| 91亚洲国产成人久久精品网站| 欧美巨乳在线观看| 亚洲国产成人精品电影| 欧美日韩亚洲一区二| 亚洲精品大尺度| 欧美日韩一区二区免费视频| 日韩欧美主播在线| 亚洲天堂第一页| 久久久精品久久久久| 在线播放日韩精品| 亚洲电影中文字幕| 在线日韩中文字幕| 欧美成在线视频| 在线色欧美三级视频| 久久久噜噜噜久久久| 久久久999国产| 国内成人精品视频| 国产亚洲aⅴaaaaaa毛片| 欧美激情国产高清|