投票问卷结果漂亮的横向显示,jquery简单实现。
来源:互联网 发布:计算机的网络功能dns 编辑:程序博客网 时间:2024/04/28 06:17
做了一个简单的投票问卷管理模块,最后需要实现投票结果横向的显示,而且要求是按题来统计并显示百分比,每个选项投票数。
网上找来找去都没有找到合适自己的,于是自己使用很笨的方法实现了一个。高手路过勿笑~呵呵
国际惯例,先上效果图:
实现原理:使用DIV嵌套DIV,父DIV作为容器,子DIV则为色带,只需设置子DIV宽度并着色即可。
上图中的横向统计色条是使用了2个DIV,外面的DIV是容器(即灰色的色带),里面的DIV则是颜色部分(色带)。色带是根据本选项计算出来的百分比来设置它的宽度并着色的,而它的宽度=容器*百分比。
至于圆角的实现则更加简单了,直接使用jquery.corner.js这个插件即可。
好了,下面准备贴代码。
色带的制作着色是根据每题总投票数,每个选项的投票数计算出来的百分比来进行着色的。所以在遍历循环问题和选项的时候,必须在后台重新组装显示的结果集合,把每个问题的投票总数、每个选项的投票数传进来。
JSP遍历的代码:
<ul><c:forEach items="${listQuestion}" var="question" varStatus="status"><li style="padding-top:10px;"><span class="oz-form-fields-span" style="padding-left:10px;">${status.index+1} ${question.questionSubject} (${question.questionVoteTotal})</span><ul><c:forEach items="${question.options}" var="option" varStatus="number"><li style="padding-top:5px;"><div style="margin-left: 35px !important;margin-left:30px;">${option.subject}</div><div class="barContatin" id="barContatin-${status.index+1}-${number.index}-${option.count}-${question.questionVoteTotal}" style="float: left;"><div id="bar-${status.index+1}-${number.index}-${option.count}-${question.questionVoteTotal}" class="bar"></div></div><div style="float: left;margin-left: 5px;"><span class="oz-form-fields-span" id="span-${status.index+1}-${number.index}-${option.count}-${question.questionVoteTotal}"></span></div><div style="clear: both;"></div></li></c:forEach></ul></li></c:forEach></ul>
代码中的listQuestion是在后台重新组装过问题集合,每个问题会有一个投票总数变量(questionVoteTotal),有一个选项的集合(${question.options},也就是options),而每一个选项中都会有一个选项的投票数量(${option.count},也就是count)。
这样把问题选项遍历出来后,就得在页面加载后去处理投票统计了。注意上面红色字体的ID和class,他们是识别每个问题下每个选项的标识,如上面class='bar'的div,如果是第一个问题第一个选项,它的ID则为ID='bar-1-0-投票数量-问题投票总数'。
CSS代码:
<style type="text/css">.barContatin {height: 16px;width: 300px;margin-left: 35px !important;margin-left:30px;margin-bottom:5px;background: #E5E5E5;}.bar {height: 16px;}</style>
JS代码:
$(document).ready(function() {playBar();});//显示统计图function playBar(){//定义条形颜色组var color=['#F2A61F','#592D8E','#5AAF4A','#2A3591','#ABBFD0'];$('.bar').each(function(){//遍历class为bar的div,也就是色条var str=$(this).attr('id').split('-');var optionVoteTotal=str[3]; //选项投票数量var questionVoteTotal=str[4];//问题投票总数//设置bar宽度var width=(optionVoteTotal/questionVoteTotal)*300;//300是容器的宽度$(this).width(width);//设置bar颜色if(str[2]<5){//如果选项个数小于5$(this).css("background",color[str[2]]);}else if(str[2]<11){//如果选项个数小于11$(this).css("background",color[str[2]-5]);}else{//如果更多$(this).css("background",color[0]);}//设置bar圆角$('#'+$(this).attr('id')).corner("right");//此处如需圆角,则需引入jquery.corner.js这个插件。不设置也可以。//设置bar容器圆角var barContatin=$(this).attr('id').replace('bar','barContatin')$('#'+barContatin).corner("right");//设置百分比及投票数var spanStr=$(this).attr('id').replace('bar','span');var percent=(optionVoteTotal*100/questionVoteTotal).toFixed(2);if(str[2]<5){$('#'+spanStr).append(percent+'% '+'<font color='+ color[str[2]] +'>('+ optionVoteTotal +')</font>');}else if(str[2]<11){$('#'+spanStr).append(percent+'% '+'<font color='+ color[str[2]-5] +'>('+ optionVoteTotal +')</font>');}else{$('#'+spanStr).append(percent+'% '+'<font color='+ color[0] +'>('+ optionVoteTotal +')</font>');}})}
好的,就这么多了。
- 投票问卷结果漂亮的横向显示,jquery简单实现。
- 基于jQuery的投票系统显示结果插件
- ASP.NET实现投票结果的图片进度条显示代码
- ASP.NET实现投票结果的图片进度条显示
- ASP.NET实现投票结果的图片进度条显示
- ASP.NET实现投票结果的图片进度条显示代码
- ASP.NET实现投票结果的图片进度条显示
- ASP.NET实现投票结果的图片进度条显示
- jQuery写的简单投票
- 投票结果的图片进度条显示
- 投票结果的图片进度条显示
- jQuery 动感的横向柱状形投票统计图
- 简单的投票系统,但显示结果时有问题,希望高手解答
- div+css+jQuery简单实现投票功能..
- ASP.NET实现用图片进度条显示投票结果
- jquery simple vote 简单的投票模拟
- jquery制作简单的投票系统
- jfreechart动态显示投票结果
- 使用links方式安装Eclipse插件
- 什么是内存泄露?及25款内存泄露检测工具!
- 低能核反应(LENR),现实主义和前景
- ios crash log
- Ruby系列文章之1---开发者应该熟悉的10个工具
- 投票问卷结果漂亮的横向显示,jquery简单实现。
- Java的图片处理工具类
- php如何获取客户端的IP?
- 星空极速 加密算法(附本人C语言源代码)
- 微软等数据结构与算法面试100题 第九题
- Nodejs实现文件upload以及download
- android源码随笔——消息循环机制
- B*树索引结构和内部管理
- 我的vim配置