滑鼠劃過星級評分效果詳解
星級評分效果大家一定不會陌生,下面就通過程式碼例項詳細介紹一下它的實現過程。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> .wrapper{ width:300px; margin:10px auto; font:14px/1.5 arial; } /*tab*/ #star{overflow:hidden;} #star li{ float:left; width:20px; height:20px; margin:2px; display:inline; color:#999; font:bold 18px arial; cursor:pointer } #star .act{color:#c00} #star_word{ width:80px; height:30px; line-height:30px; border:1px solid #ccc; margin:10px; text-align:center; display:none } </style> <script> window.onload = function(){ var star = document.getElementById("star"); var star_li = star.getElementsByTagName("li"); var star_word = document.getElementById("star_word"); var result = document.getElementById("result"); var index = 0; var len = star_li.length; var word = ["很差", "差", "一般", "好", "很好"]; var clickIndex = -1; for(index=0; index<len; index++){ star_li[index].index = index; star_li[index].onmouseover = function(){ star_word.style.display = "block"; star_word.innerHTML = word[this.index]; for(index=0; index<=this.index; index++){ star_li[index].className = "act"; } } star_li[index].onmouseout = function(){ star_word.style.display = "none"; if (this.index <= clickIndex) { return; } else { for (var index = clickIndex + 1; index <= this.index; index++) { star_li[index].className = ""; } } } star_li[index].onclick = function(){ result.innerHTML = (this.index + 1) + "分"; clickIndex = this.index; for (index = 0; index < len; index++) { star_li[index].className = ""; } for (index = 0; index <= this.index; index++) { star_li[index].className = "act"; } } } } </script> </head> <body> <div class="wrapper"> 打分結果:<span id="result"></span> <ul id="star"> <li>★</li> <li>★</li> <li>★</li> <li>★</li> <li>★</li> </ul> <div id="star_word">一般</div> </div> </body> </html>
上面的程式碼實現了星級評分效果,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).window.onload = function(){},當文件內容完全載入完畢再去執行函式中的程式碼。
(2).var star = document.getElementById("star"),獲取id屬性值為star的元素物件。
(3).var star_li = star.getElementsByTagName("li"),獲取所有的li元素。
(4).var star_word = document.getElementById("star_word");,獲取id屬性值為star_word元素物件。
(5).var result = document.getElementById("result"),獲取id屬性值為result的元素物件。
(6).var i=0,宣告一個變數用來作為索引。
(7).var len = star_li.length,獲取li元素的數目。
(8).var word = ['很差','差','一般',"好","很好"],建立一個陣列,用來儲存評價等級。
(9).var clickIndex = -1,宣告一個變數並賦初值為-1,用來存放最後點選的li元素的索引值,由於li元素最小索引值是0,所以權且用-1表示從來沒有點選過li元素。
(10).for(index=0; index<len; index++){},遍歷每一個li元素。
(11).star_li[index].index = index,為當前元素建立一個index屬性,並賦值為當前索引。
(12).star_li[index].onmouseover = function(){},為當前li元素註冊onmouseover事件處理函式。
(13).star_word.style.display = "block",顯示評價語。
(14).star_word.innerHTML = word[this.index],設定元素的內容,根據元素的索引來獲取陣列中的內容,因為評級和li元素的索引相對應。
(15).for(index=0; index<=this.index; index++){
star_li[index].className = "act";
},將當前li元素和當前li元素之前的li元素class屬性值設定為"act"。
(16).star_li[index].onmouseout = function(){},為元素註冊mouseout事件處理函式。
(17).star_word.style.display = "none",隱藏顯示評語的元素。
(18).if (this.index <= clickIndex) {
return;
} else {
for (var index = clickIndex + 1; index <= this.index; index++) {
star_li[index].className = "";
}
},判斷當前滑鼠離開的li元素的索引是否小於等於最近點選li元素的索引,如果滿足,則直接跳出函式。
如果大於最近點選的li元素的索引,那麼當滑鼠離開的時候,就會將最近點選li元素(不包括)與滑鼠離開的li元素(包括)之間的所有li元素的class屬性值清空。
(19).star_li[index].onclick = function(){},為li元素註冊click事件處理函式。
(20).result.innerHTML = (this.index + 1) + "分",評分,由於第一個li元素索引是0,所以加1,也就是點選第一個li元素評分為1,第二個評分為2,以此來推。
(21).clickIndex = this.index,將當前點選li元素的索引賦值給變數clickIndex 。
(22).for (index = 0; index < len; index++) {
star_li[index].className = "";
},首先清空所有li元素的class屬性值,否則點選選取索引較大的li元素之後,就無法再選取較小的li元素。
(23).for (index = 0; index <= this.index; index++) {
star_li[index].className = "act";
},將當前點選li元素(包括)之前的所有li元素class屬性值設定為"act"。
二.相關閱讀:
(1).getElementsByTagName()參閱document.getElementsByTagName()一章節。
(2).innerHTML參閱JavaScript innerHTML一章節。
(3)className參閱JavaScript className一章節。
相關文章
- jQuery星級評分效果詳解jQuery
- jQuery+PHP實現購物商城常用的星級評分效果jQueryPHP
- jQuery滑鼠懸浮翻牌效果詳解jQuery
- jQuery滑鼠懸浮聚焦效果詳解jQuery
- Qml 實現星級評分元件 已釋出元件
- JavaScript省市級聯效果詳解JavaScript
- Flutter星級評選Flutter
- 三種方式使用純 CSS 實現星級評分CSS
- 滑鼠懸浮小圖彈出大圖效果詳解
- CSS3五角星效果詳解CSSS3
- 年月日級聯效果詳解
- JavaScript數字分頁效果詳解JavaScript
- css3過渡效果詳解CSSS3
- Flutter | 擼一個高大上的星級評分控制元件Flutter控制元件
- 星級評價的實現
- VUE實現評分效果和不同型別分數展示效果元件Vue型別元件
- jQuery滑鼠滑過表格標題切換表格內容詳解jQuery
- jQuery-五角星評分案例jQuery
- 微信小程式實現星星評分效果微信小程式
- 詳細瞭解 synchronized 鎖升級過程synchronized
- 推薦一款JQ星級評分外掛
- 基於SVG的jQuery星級評分外掛-jRateSVGjQuery
- 數字孿生成熟度解讀——等級劃分
- JavaScript 打字機效果詳解JavaScript
- JavaScript 秒錶效果詳解JavaScript
- jQuery彈幕效果詳解jQuery
- JavaScript抽獎效果詳解JavaScript
- jQuery 放大鏡效果詳解jQuery
- css滑鼠浮劃過切換按鈕背景圖片CSS
- 集合劃分 題解
- 星級評價元件--引發對React元件的思考元件React
- js之滑鼠的拖曳效果JS
- Dreamweaver製作滑鼠經過圖片漸漸變暗效果教程
- Win10雙屏設定 之 滑鼠不能從中間劃過 問題解決Win10
- JavaScript 雪花飄舞效果詳解JavaScript
- 一文詳解|高校到底如何開展資料分類分級?
- 如何對BUG進行等級劃分?分享一份我整理的BUG等級劃分表
- 【新特性速遞】評分,評分,評分