论坛首页 Web前端技术论坛

jQuery加分动画效果示例

浏览 13345 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-01-31   最后修改:2012-02-02
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> jQuery加分动画效果示例 </TITLE>
  <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
  <script src="Scripts/jquery.message.js" type="text/javascript"></script>
  <link href="Css/jquery.message.css" rel="stylesheet" type="text/css" />
<script>
$(function(){
	$("#add").click(function(){

		 //取得要加的分数
	     var fen = $("#fen").val();
		 //取得现在的分数
		 var result = $("#result").text()*1;
		 //分数验证
		 if(!(/^(([0-9])|([1-9]+[0-9]*))$/.test(fen)) ){
			  alert('不是有效数字');
			  return false;
		 }
	     //文本框和按钮设置成不可用
		 $("#add").attr("disabled",true);
		 $("#fen").attr("disabled",true);

		 //显示加分提示框
		 $.MessageShow("+"+fen+"分");

		 //开始进行分数变化过程
		 var a_num = fen;
		 var a=result; 	  
		 var clear = setInterval(function(){
		 	 $("#result").text(a);
			 if(a<(result*1+fen*1)){
				a++;
			 }else{
				 //停止运行
				 clearInterval(clear);
				 //文本框和按钮设置成可用
				 $("#add").attr("disabled",false);
				 $("#fen").attr("disabled",false);
			 }
			 
		 },(1));// 3000/a_num+1
	});
});
</script>
 </HEAD>

 <BODY>
    分数<b id='result'>100</b>
	<br/>
  	<input type='text' name='fen' id='fen' value=''/>
	<input type='button' name='add' id='add' value='加分'/>
 </BODY>
</HTML>





后来发现加的数值太大后会等待的时间太久,我就在这个基础上做了一下修改
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> jQuery加分动画效果示例 </TITLE>
  <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
  <script src="Scripts/jquery.message.js" type="text/javascript"></script>
  <link href="Css/jquery.message.css" rel="stylesheet" type="text/css" />
<script>
$(function(){
	//取得每次相加的数值,mum为要加的分数,n为相加的流水次数
	function getAddNum(num,n){
		var len = num.toString().length;//取得数值的长度
		var sp=1; //每次相加的数值
		if(len>2){ //如果分数长度大于2,(总相加次数-1)次相加过程中就每次相加(分数长度-1)个1,最后加上剩余的数值。
			var J=0;
			for(J=0;J<(len-2);J++){	//计算出 (分数长度-1)个1
				sp+="1";
			}
			sp = sp*1;

			var v= parseInt(num/sp); //有多少次
			if(n<v){
				return sp; //返回(分数长度-1)个1
			}else{
				return (num-v*sp);//返回剩余数值
			}			
		} 
		return sp;
	}
	$("#add").click(function(){

		 //取得要加的分数
	     var fen = $("#fen").val();
		 //取得现在的分数
		 var result = $("#result").text()*1;
		 //分数验证
		 if(!(/^(([0-9])|([1-9]+[0-9]*))$/.test(fen)) ){
			  alert('不是有效数字');
			  return false;
		 }
	     //文本框和按钮设置成不可用
		 $("#add").attr("disabled",true);
		 $("#fen").attr("disabled",true);

		 //显示加分提示框
		 $.MessageShow("+"+fen+"分");

		 //开始进行分数变化过程
		 var a_num = fen;
		 var a=result; 
		 var I=0; //记录相加次数
		 var clear = setInterval(function(){
		 	 $("#result").text(a);
			 if(a<(result*1+fen*1)){
			    a = a+getAddNum(fen,I);
				I++;
				
			 }else{
				 //停止运行
				 clearInterval(clear);
				 //文本框和按钮设置成可用
				 $("#add").attr("disabled",false);
				 $("#fen").attr("disabled",false);
			 }
			 
		 },(1));// 3000/a_num+1
	});
});
</script>
 </HEAD>

 <BODY>
    分数<b id='result'>100</b>
	<br/>
  	<input type='text' name='fen' id='fen' value=''/>
	<input type='button' name='add' id='add' value='加分'/>
 </BODY>
</HTML>
  • 大小: 5.4 KB
   发表时间:2012-02-01  
留底以后备用。。。
0 请登录后投票
   发表时间:2012-02-01  
没人啊看来
0 请登录后投票
   发表时间:2012-02-01  
这个setInterval(function(){},1);用得很巧秒,确实可以达到变化的效果,我先还以为是CSS在控制
0 请登录后投票
   发表时间:2012-02-01  
效果挺好的
0 请登录后投票
   发表时间:2012-02-02  
效果很不错,果断收藏
0 请登录后投票
   发表时间:2012-02-02  
效果还行,加1000分等待时间太长~~
如果加1W,10W那估计。。。。
0 请登录后投票
   发表时间:2012-02-02  
建议在修改大量数值的时候缩短时间。
0 请登录后投票
   发表时间:2012-02-02  
好,真的很好
0 请登录后投票
   发表时间:2012-02-02  
lf662000 写道
效果还行,加1000分等待时间太长~~
如果加1W,10W那估计。。。。

你试一下这个看看
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics