<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="keywords" content="jquery"/>
<meta name="description" content="抽奖大转盘"/>
<title>PHP+JQUERY实现抽奖大转盘</title>
<script type="text/javascript" src="../../../jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery.flip.min.js"></script>
<script type="text/javascript" src="jquery-ui-1.7.2.custom.min.js"></script>
<style type="text/css">
ul{list-style-type:none;border:1px solid #eee;width:600px;height:400px;}
ul li{width:160px;height:160px;border:1px solid black;float:left;margin-left:10px;margin-top:10px;}
.red{background:red;}
.green{background:green;}
.blue{background:blue;}
.purple{background:purple;}
.olive{background:olive;}
.brown{background:brown;}
</style>
<script type="text/javascript">
$(function(){
$("#prize li").each(function(){
var p = $(this);
var c = $(this).attr('class');
p.css("background-color",c);
p.click(function(){
$("#prize li").unbind('click');
$.getJSON("data.php",function(json){
var prize = json.yes; //抽中的奖项
p.flip({
direction:'rl', //翻动的方向rl:right to left
content:prize, //翻转后显示的内容即奖品
color:c, //背景色
onEnd: function(){ //翻转结束
p.css({"font-size":"22px","line-height":"100px"});
p.attr("id","r"); //标记中奖方块的id
$("#viewother").show(); //显示查看其他按钮
$("#prize li").unbind('click')
.css("cursor","default").removeAttr("title");
}
});
$("#data").data("nolist",json.no); //保存未中奖信息
$("viewother").css("display","block");
});
});
});
});
$(function(){
$("#viewother").click(function(){
var mydata = $("#data").data("nolist"); //获取数据
var mydata2 = eval(mydata);//通过eval()函数可以将JSON转换成数组
$("#prize li").not($('#r')[0]).each(function(index){
var pr = $(this);
pr.flip({
direction:'bt',
color:'lightgrey',
content:mydata2[index], //奖品信息(未抽中)
onEnd:function(){
pr.css({"font-size":"22px","line-height":"100px","color":"#333"});
$("#viewother").hide();
}
});
});
$("#data").removeData("nolist");
});
});
</script>
</head>
<body>
<ul id="prize">
<li class="red" title="点击抽奖">1</li>
<li class="green" title="点击抽奖">2</li>
<li class="blue" title="点击抽奖">3</li>
<li class="purple" title="点击抽奖">4</li>
<li class="olive" title="点击抽奖">5</li>
<li class="brown" title="点击抽奖">6</li>
</ul>
<div><a href="#" id="viewother" style="display:none;">翻开其他</a></div>
<div id="data"></div>
</body>
</html>
<?php
function get_rand($proArr) {
$result = '';
//概率数组的总概率精度
$proSum = array_sum($proArr);
//概率数组循环
foreach ($proArr as $key => $proCur) {
$randNum = mt_rand(1, $proSum);
if ($randNum <= $proCur) {
$result = $key;
break;
} else {
$proSum -= $proCur;
}
}
unset ($proArr);
return $result;
}
$prize_arr = array(
'0' => array('id'=>1,'prize'=>'平板电脑','v'=>1),
'1' => array('id'=>2,'prize'=>'数码相机','v'=>5),
'2' => array('id'=>3,'prize'=>'音箱设备','v'=>10),
'3' => array('id'=>4,'prize'=>'4G优盘','v'=>12),
'4' => array('id'=>5,'prize'=>'10Q币','v'=>22),
'5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50),
);
foreach($prize_arr as $key=>$val){
$arr[$val['id']]=$val['v'];
}
$rid=get_rand($arr);//根据概率获取奖项id
$res['yes']=$prize_arr[$rid-1]['prize'];//中奖项
unset($prize_arr[$rid-1]);
shuffle($prize_arr);
for($i=0;$i<count($prize_arr);$i++){
$pr[]=$prize_arr[$i]['prize'];
}
$res['no']=$pr;
echo json_encode($res);
?>