js实现简单的星级选择器提交效果适用于评论等


Posted in Javascript onOctober 18, 2013

星级选择器,提交代码适用于评论等

没有用到js库,就是单独的js代码
js实现简单的星级选择器提交效果适用于评论等 

<form action="" method="get"> 
<div id="star_level" star_width="14"> 
<p>服务</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>价格</p> 
<ul class="star_rating"> 
<li style="display:none;"> 
<input type="text" name="price" value="" title="这里设置为2的话,表示默认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>质量</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="提交后请看地址栏的参数" /> 
</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;} 
//获取默认值 
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发生死循环 
} 
var hidden_input=parent_obj.getElementsByTagName("input")[0]; 
if(hidden_input.length<1){/*alert("sorry?\nprogram error!")*/;} 
var txt=obj.firstChild.nodeValue;//确保不能存在空格哦,因为这里用的firstChild 
if(isNaN(parseInt(txt,10))){/*alert('level error!')*/;return false;} 
hidden_input.setAttribute("value",txt.toString()); 
//固定选中状态,先找到初始化颜色那个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;}
Javascript 相关文章推荐
JavaScript对象模型-执行模型
Apr 28 Javascript
jQuery UI 应用不同Theme的办法
Sep 12 Javascript
jquery增加和删除元素的方法
Jan 14 Javascript
Perl Substr()函数及函数的应用
Dec 16 Javascript
jQuery取得iframe中元素的常用方法详解
Jan 14 Javascript
浅析Javascript中bind()方法的使用与实现
Apr 29 Javascript
JS加载iFrame出现空白问题的解决办法
May 13 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
Nov 09 Javascript
详解React native全局变量的使用(跨组件的通信)
Sep 07 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
Javascript 对象(object)合并操作实例分析
Jul 30 Javascript
详解vue中v-on事件监听指令的基本用法
Jul 22 Javascript
用jquery统计子菜单的条数示例代码
Oct 18 #Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
Oct 18 #Javascript
通过length属性判断jquery对象是否存在
Oct 18 #Javascript
js 使FORM表单的所有元素不可编辑的示例代码
Oct 17 #Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
Oct 17 #Javascript
jquery快捷动态绑定键盘事件的操作函数代码
Oct 17 #Javascript
js实现的常用的左侧导航效果
Oct 17 #Javascript
You might like
php 时间计算问题小结
2009/01/04 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
php中的动态调用实例分析
2015/01/07 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
javascript 清除输入框中的数据
2009/04/13 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
JavaScript 继承使用分析
2011/05/12 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
股票投资建议书
2014/05/19 职场文书
军事博物馆观后感
2015/06/05 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server