類似於淘寶和百度文庫的評分功能;
效果如圖:
五個五角星分別放在了一個table的五列中。下面是一個<p>,用來顯示評分結果的;代碼如下:
<body onload="changebg()"> <table border="0" align="center" cellpadding="0" cellspacing="0" id="maintable"> <tr style=" font-size:30px;"> <td>☆</td><td>☆</td><td>☆</td><td>☆</td><td>☆</td> </tr> </table> <p align="center" id="result">您評了<label id="score"></label>分</p> </body>
body的onload事件綁定的是一個方法;js代碼如下:
1 <script type="text/javascript"> 2 function getindex(arr,element) { //參數:數組,元素;返回兄弟元素的索引 3 for (var i = 0; i < arr.length; i++) { 4 if (arr[i] == element) { 5 return i; 6 } 7 } 8 return -1; 9 } 10 11 function changebg() { //為每個td設置獲得焦點屬性【也可以設置onclick屬性】 12 var maintable = document.getElementById("maintable"); //獲取需要設置的表格 13 var tds = maintable.getElementsByTagName("td"); //獲取表格下的所有單元格 14 document.getElementById("result").style.display = "none"; //設置得分結果為隱藏 15 for (var i = 0; i < tds.length; i++) { 16 var td = tds[i]; 17 td.onfocus = getonfocus; 18 td.style.cursor = "pointer"; //為了設置鼠標放在五角星上呈手型 19 } 20 21 } 22 function getonfocus(){ //設置td的焦點事件, 23 var maintable = document.getElementById("maintable"); 24 var tds = maintable.getElementsByTagName("td"); 25 var index = getindex(tds, this); //返回響應事件的索引 用this代表觸發此事件的元素 26 document.getElementById("result").style.display = ""; //得到分數后把結果顯示出來 27 document.getElementById("score").innerText = index + 1; 28 for (var i = 0; i < index+1; i++) { 29 tds[i].style.color = "red"; 30 } 31 for (var i = index+1; i < tds.length; i++) { 32 tds[i].style.color = "black"; 33 } 34 35 } 36 </script>
js代碼主要有三個函數構成;
①:changebg();body的onload事件綁定的函數;為了實現對每個td元素綁定onfocus事件;
②:getonfocus();td元素onfocus事件的具體實現;
③:getindex();有兩個參數,一個是td元素的集合數組,一個是相應事件的td元素,注意使用this關鍵字。主要返回相應事件的元素的索引,為了把響應事件元素之前的顏色顯示成紅色,后面的元素顯示成黑色;