js實(shí)現(xiàn)簡(jiǎn)單的星級(jí)選擇器提交效果適用于評(píng)論等
更新時(shí)間:2013年10月18日 11:27:15 作者:
星級(jí)選擇器在網(wǎng)上會(huì)搜到很多類(lèi)似的代碼,不過(guò)實(shí)現(xiàn)起來(lái)相對(duì)比較復(fù)雜,在本文將為大家介紹的是使用js簡(jiǎn)單的實(shí)現(xiàn)下,感興趣的朋友不要錯(cuò)過(guò)
星級(jí)選擇器,提交代碼適用于評(píng)論等
沒(méi)有用到j(luò)s庫(kù),就是單獨(dú)的js代碼
<form action="" method="get">
<div id="star_level" star_width="14">
<p>服務(wù)</p>
<ul class="star_rating">
<li style="display:none;">
<input type="text" name="serve" value="" />
</li>
<li class="current_rating">default level</li>
<li><a href="#" title="1 of 5 stars" class="one_star">1</a></li>
<li><a href="#" title="2 of 5 stars" class="two_stars">2</a></li>
<li><a href="#" title="3 of 5 stars" class="three_stars">3</a></li>
<li><a href="#" title="4 of 5 stars" class="four_stars">4</a></li>
<li><a href="#" title="5 of 5 stars" class="five_stars">5</a></li>
</ul>
<p>價(jià)格</p>
<ul class="star_rating">
<li style="display:none;">
<input type="text" name="price" value="" title="這里設(shè)置為2的話(huà),表示默認(rèn)2顆星亮。" />
</li>
<li class="current_rating">default level</li>
<li><a href="#" title="1 of 5 stars" class="one_star">1</a></li>
<li><a href="#" title="2 of 5 stars" class="two_stars">2</a></li>
<li><a href="#" title="3 of 5 stars" class="three_stars">3</a></li>
<li><a href="#" title="4 of 5 stars" class="four_stars">4</a></li>
<li><a href="#" title="5 of 5 stars" class="five_stars">5</a></li>
</ul>
<p>質(zhì)量</p>
<ul class="star_rating">
<li style="display:none;">
<input type="text" name="mass" value="" />
</li>
<li class="current_rating">default level</li>
<li><a href="#" title="1 of 5 stars" class="one_star">1</a></li>
<li><a href="#" title="2 of 5 stars" class="two_stars">2</a></li>
<li><a href="#" title="3 of 5 stars" class="three_stars">3</a></li>
<li><a href="#" title="4 of 5 stars" class="four_stars">4</a></li>
<li><a href="#" title="5 of 5 stars" class="five_stars">5</a></li>
</ul>
</div>
<input type="submit" value="提交后請(qǐng)看地址欄的參數(shù)" />
</form>
<script type="text/javascript">
<!--
function __start(){
var initialize_width=0;
if(document.getElelmentById){return false};
if(document.getElementsByTagName==null){return false;}
var startLevelObj=document.getElementById("star_level")
if(startLevelObj==null){return false;}
initialize_width=parseInt(startLevelObj.getAttribute("star_width"),10);
if(isNaN(initialize_width) || initialize_width==0){return false;}
var ul_obj=startLevelObj.getElementsByTagName("ul");
if(ul_obj.length<1){return false;}
var length=ul_obj.length;
var li_length=0;
var a_length=0;
var li_obj=null;
var a_obj=null;
var defaultInputObj=null;
var defaultValue=null;
for(var i=0;i<length;i++){
li_obj=ul_obj[i].getElementsByTagName("li");
li_length=li_obj.length;
if(li_length<0){return false;}
//獲取默認(rèn)值
defaultInputObj=li_obj[0].getElementsByTagName("input");if(!defaultInputObj){return false;}
defaultValue=parseInt(defaultInputObj[0].value,10);
if(!isNaN(defaultValue) && defaultValue!=0){
//alert("有初始值!");
//li_obj[1].style.width=initialize_width*defaultValue+"px";
//defaultValue=0;
}
for(var j=0;j<li_length;j++){
a_obj=li_obj[j].getElementsByTagName("a");
if(a_obj.length<1){continue;}
if(a_obj[0].className.indexOf("star")>0){
a_obj[0].onclick=function(){
return give_value(this);
}
a_obj[0].onfocus=function(){
this.blur();
}
}
}
}
}
function give_value(obj){
var status=true;
var parent_obj=obj.parentNode;
var i=0;
while(status){
i++;
if(parent_obj.nodeName=="UL"){break;}
parent_objparent_obj=parent_obj.parentNode;
if(i>1000){break;}//防止找不到ul發(fā)生死循環(huán)
}
var hidden_input=parent_obj.getElementsByTagName("input")[0];
if(hidden_input.length<1){/*alert("sorry?\nprogram error!")*/;}
var txt=obj.firstChild.nodeValue;//確保不能存在空格哦,因?yàn)檫@里用的firstChild
if(isNaN(parseInt(txt,10))){/*alert('level error!')*/;return false;}
hidden_input.setAttribute("value",txt.toString());
//固定選中狀態(tài),先找到初始化顏色那個(gè)li
var current_li=parent_obj.getElementsByTagName("li");
var length=current_li.length;
var ok_li_obj=null;
for(var i=0;i<length;i++){
if(current_li[i].className.indexOf("current_rating")>=0){
ok_li_obj=current_li[i];break;//找到
}
}
__current_width=txt*14;
ok_li_obj.style.width=__current_width+"px";
return false;
}
__start();
//-->
</script>
body{font-size:12px;}
ul{padding:0;margin:0;}
/*star.css*/
.star_rating {list-style:none;margin:-1px 0 0 -1px; padding:0; width:70px; height:12px; position:relative; background:url(rating_stars.gif) 0 0 repeat-x; overflow:hidden;font-size:0;}
.star_rating li{padding:0;margin:0;float:left;}
.star_rating li a{display:block;width:14px;height:12px;text-decoration:none;text-indent:-9000px;z-index:20;position:absolute;padding:0;margin:0;}
.star_rating li a:hover{background:url(rating_stars.gif) 0 12px;z-index:2;left:0;}
.star_rating a.one_star{left:0;}
.star_rating a.one_star:hover{width:14px;}
.star_rating a.two_stars{left:14px;}
.star_rating a.two_stars:hover{width:28px;}
.star_rating a.three_stars{left:28px;}
.star_rating a.three_stars:hover{width:42px;}
.star_rating a.four_stars{left:42px;}
.star_rating a.four_stars:hover{width:56px;}
.star_rating a.five_stars{left:56px;}
.star_rating a.five_stars:hover{width:70px;}
.star_rating li.current_rating{background:url(rating_stars.gif) 0 24px;position:absolute;height:12px;display:block;text-indent:-9000px;z-index:1;left:0;}
/*end star.css*/
#star_level{margin:0 0 20px 20px;}
#star_level p{margin:20px 0 5px 0;}
沒(méi)有用到j(luò)s庫(kù),就是單獨(dú)的js代碼
復(fù)制代碼 代碼如下:
<form action="" method="get">
<div id="star_level" star_width="14">
<p>服務(wù)</p>
<ul class="star_rating">
<li style="display:none;">
<input type="text" name="serve" value="" />
</li>
<li class="current_rating">default level</li>
<li><a href="#" title="1 of 5 stars" class="one_star">1</a></li>
<li><a href="#" title="2 of 5 stars" class="two_stars">2</a></li>
<li><a href="#" title="3 of 5 stars" class="three_stars">3</a></li>
<li><a href="#" title="4 of 5 stars" class="four_stars">4</a></li>
<li><a href="#" title="5 of 5 stars" class="five_stars">5</a></li>
</ul>
<p>價(jià)格</p>
<ul class="star_rating">
<li style="display:none;">
<input type="text" name="price" value="" title="這里設(shè)置為2的話(huà),表示默認(rèn)2顆星亮。" />
</li>
<li class="current_rating">default level</li>
<li><a href="#" title="1 of 5 stars" class="one_star">1</a></li>
<li><a href="#" title="2 of 5 stars" class="two_stars">2</a></li>
<li><a href="#" title="3 of 5 stars" class="three_stars">3</a></li>
<li><a href="#" title="4 of 5 stars" class="four_stars">4</a></li>
<li><a href="#" title="5 of 5 stars" class="five_stars">5</a></li>
</ul>
<p>質(zhì)量</p>
<ul class="star_rating">
<li style="display:none;">
<input type="text" name="mass" value="" />
</li>
<li class="current_rating">default level</li>
<li><a href="#" title="1 of 5 stars" class="one_star">1</a></li>
<li><a href="#" title="2 of 5 stars" class="two_stars">2</a></li>
<li><a href="#" title="3 of 5 stars" class="three_stars">3</a></li>
<li><a href="#" title="4 of 5 stars" class="four_stars">4</a></li>
<li><a href="#" title="5 of 5 stars" class="five_stars">5</a></li>
</ul>
</div>
<input type="submit" value="提交后請(qǐng)看地址欄的參數(shù)" />
</form>
復(fù)制代碼 代碼如下:
<script type="text/javascript">
<!--
function __start(){
var initialize_width=0;
if(document.getElelmentById){return false};
if(document.getElementsByTagName==null){return false;}
var startLevelObj=document.getElementById("star_level")
if(startLevelObj==null){return false;}
initialize_width=parseInt(startLevelObj.getAttribute("star_width"),10);
if(isNaN(initialize_width) || initialize_width==0){return false;}
var ul_obj=startLevelObj.getElementsByTagName("ul");
if(ul_obj.length<1){return false;}
var length=ul_obj.length;
var li_length=0;
var a_length=0;
var li_obj=null;
var a_obj=null;
var defaultInputObj=null;
var defaultValue=null;
for(var i=0;i<length;i++){
li_obj=ul_obj[i].getElementsByTagName("li");
li_length=li_obj.length;
if(li_length<0){return false;}
//獲取默認(rèn)值
defaultInputObj=li_obj[0].getElementsByTagName("input");if(!defaultInputObj){return false;}
defaultValue=parseInt(defaultInputObj[0].value,10);
if(!isNaN(defaultValue) && defaultValue!=0){
//alert("有初始值!");
//li_obj[1].style.width=initialize_width*defaultValue+"px";
//defaultValue=0;
}
for(var j=0;j<li_length;j++){
a_obj=li_obj[j].getElementsByTagName("a");
if(a_obj.length<1){continue;}
if(a_obj[0].className.indexOf("star")>0){
a_obj[0].onclick=function(){
return give_value(this);
}
a_obj[0].onfocus=function(){
this.blur();
}
}
}
}
}
function give_value(obj){
var status=true;
var parent_obj=obj.parentNode;
var i=0;
while(status){
i++;
if(parent_obj.nodeName=="UL"){break;}
parent_objparent_obj=parent_obj.parentNode;
if(i>1000){break;}//防止找不到ul發(fā)生死循環(huán)
}
var hidden_input=parent_obj.getElementsByTagName("input")[0];
if(hidden_input.length<1){/*alert("sorry?\nprogram error!")*/;}
var txt=obj.firstChild.nodeValue;//確保不能存在空格哦,因?yàn)檫@里用的firstChild
if(isNaN(parseInt(txt,10))){/*alert('level error!')*/;return false;}
hidden_input.setAttribute("value",txt.toString());
//固定選中狀態(tài),先找到初始化顏色那個(gè)li
var current_li=parent_obj.getElementsByTagName("li");
var length=current_li.length;
var ok_li_obj=null;
for(var i=0;i<length;i++){
if(current_li[i].className.indexOf("current_rating")>=0){
ok_li_obj=current_li[i];break;//找到
}
}
__current_width=txt*14;
ok_li_obj.style.width=__current_width+"px";
return false;
}
__start();
//-->
</script>
復(fù)制代碼 代碼如下:
body{font-size:12px;}
ul{padding:0;margin:0;}
/*star.css*/
.star_rating {list-style:none;margin:-1px 0 0 -1px; padding:0; width:70px; height:12px; position:relative; background:url(rating_stars.gif) 0 0 repeat-x; overflow:hidden;font-size:0;}
.star_rating li{padding:0;margin:0;float:left;}
.star_rating li a{display:block;width:14px;height:12px;text-decoration:none;text-indent:-9000px;z-index:20;position:absolute;padding:0;margin:0;}
.star_rating li a:hover{background:url(rating_stars.gif) 0 12px;z-index:2;left:0;}
.star_rating a.one_star{left:0;}
.star_rating a.one_star:hover{width:14px;}
.star_rating a.two_stars{left:14px;}
.star_rating a.two_stars:hover{width:28px;}
.star_rating a.three_stars{left:28px;}
.star_rating a.three_stars:hover{width:42px;}
.star_rating a.four_stars{left:42px;}
.star_rating a.four_stars:hover{width:56px;}
.star_rating a.five_stars{left:56px;}
.star_rating a.five_stars:hover{width:70px;}
.star_rating li.current_rating{background:url(rating_stars.gif) 0 24px;position:absolute;height:12px;display:block;text-indent:-9000px;z-index:1;left:0;}
/*end star.css*/
#star_level{margin:0 0 20px 20px;}
#star_level p{margin:20px 0 5px 0;}
您可能感興趣的文章:
- JS類(lèi)定義原型方法的兩種實(shí)現(xiàn)的區(qū)別評(píng)論很多
- 使用AngularJS和PHP的Laravel實(shí)現(xiàn)單頁(yè)評(píng)論的方法
- 一個(gè)jsp+AJAX評(píng)論系統(tǒng)
- js寫(xiě)的評(píng)論分頁(yè)(還不錯(cuò))
- Qt QThreadPool線程池的實(shí)現(xiàn)
- 原生js實(shí)現(xiàn)回復(fù)評(píng)論功能
- Json實(shí)現(xiàn)異步請(qǐng)求提交評(píng)論無(wú)需跳轉(zhuǎn)其他頁(yè)面
- vue.js實(shí)現(xiàn)用戶(hù)評(píng)論、登錄、注冊(cè)、及修改信息功能
- Vue.js實(shí)現(xiàn)文章評(píng)論和回復(fù)評(píng)論功能
- JavaScript實(shí)現(xiàn)QQ聊天消息展示和評(píng)論提交功能
相關(guān)文章
一個(gè)JS函數(shù)搞定網(wǎng)頁(yè)標(biāo)題(title)閃動(dòng)效果
這篇文章主要介紹了使用JS函數(shù)實(shí)現(xiàn)網(wǎng)頁(yè)標(biāo)題(title)閃動(dòng)效果的代碼,需要的朋友可以參考下2014-05-05
js實(shí)現(xiàn)文字垂直滾動(dòng)和鼠標(biāo)懸停效果
這篇文章主要介紹了js實(shí)現(xiàn)文字垂直滾動(dòng)和鼠標(biāo)懸停效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-12-12
js實(shí)現(xiàn)將json數(shù)組顯示前臺(tái)table中
本文主要介紹了把JSON數(shù)組顯示在前臺(tái)的table中的方法。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01
nestjs返回給前端數(shù)據(jù)格式的封裝實(shí)現(xiàn)
這篇文章主要介紹了nestjs返回給前端數(shù)據(jù)格式的封裝實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Javascript實(shí)現(xiàn)視頻輪播在pc端與移動(dòng)端均可
用Javascript實(shí)現(xiàn)視頻輪播,畢竟是客戶(hù)的需求嗎?所以盡量實(shí)現(xiàn)下,下面有個(gè)實(shí)現(xiàn)視頻輪播的示例,pc端與移動(dòng)端均可以實(shí)現(xiàn),感興趣的朋友可以了解下2013-09-09
不到200行 JavaScript 代碼實(shí)現(xiàn)富文本編輯器的方法
這篇文章主要介紹了不到200行 JavaScript 代碼實(shí)現(xiàn)富文本編輯器的方法,需要的朋友可以參考下2018-01-01
JavaScript實(shí)現(xiàn)獲取本機(jī)IP地址
這篇文章主要介紹了JavaScript實(shí)現(xiàn)獲取本機(jī)IP地址方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07

