jQuery数字滚动展示效果

2013年05月14日 21:30helloweba.com 作者:月光光 标签:jQuery  滑动 

有时我们需要动态的展示访问次数、下载次数等效果,我们可以借助jQuery结合后台php实现一个滚动的数字展示效果。本文将结合实例使用jquery背景动画插件,将数字作为背景图片,定时让背景图片滚动起来,从而实现了滚动数字的效果。

本文以实时获取某产品的下载次数为场景,前台定时执行javascript获取最新的下载次数,并滚动更新页面上的下载次数。

HTML

我们首先载入jQuery库文件和动画背景插件:animateBackground-plugin.js。

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/animateBackground-plugin.js"></script>

然后我们在页面适当的位置中加入要展示数字滚动效果的html元素。

<div id="total">
   下载量:<span class="t_num"></span>次
</div>

jQuery

首先来写一个函数show_num(),该函数用来实现动态滚动数字。我们将统计数字n进行拆分成一个个单独的数字,这些数字用<i></i>包围,通过调用插件backgroundPosition将图片定位到对应的每个数字上。

function show_num(n){
	var it = $(".t_num i");
	var len = String(n).length;
	for(var i=0;i<len;i++){
		if(it.length<=i){
			$(".t_num").append("<i></i>");
		}
		var num=String(n).charAt(i);
		var y = -parseInt(num)*30; //y轴位置
		var obj = $(".t_num i").eq(i);
		obj.animate({ //滚动动画
			backgroundPosition :'(0 '+String(y)+'px)' 
			}, 'slow','swing',function(){}
		);
	}
}

接着,我们通过ajax获取后台最新的下载次数。下面的代码是一个常见的jQuery的ajax请求,通过post请求到data.php,data.php或获取最新的下载次数,处理成功后则得到下载次数:data.count,然后调用show_num()实现数字滚动。

function getdata(){
	$.ajax({
	    url: 'data.php',
		type: 'POST',
		dataType: "json",
		cache: false,
		timeout: 10000,
		error: function(){},
		success: function(data){
			show_num(data.count);
	    }
   	});
}

最后,我们在页面加载完后要初始化数据,然后每隔3秒钟执行一次ajax请求,更新下载次数:

$(function(){
	getdata();
	setInterval('getdata()', 3000);//每隔3秒执行一次
});

类似可以在统计网站访问量、统计影片播放次数、倒计时等方面得到应用,至于后台data.php如何处理数据不在本文叙述范围内,有兴趣的同学可以自己写一个诸如计数器之类的后台程序来返回data.count。

声明:本文为原创文章,helloweba.net和作者拥有版权,如需转载,请注明来源于helloweba.net并保留原文链接:https://www.helloweba.net/javascript/217.html

28条评论

  • _

    Uncaught TypeError: Cannot read property '1' of null 为什么一直报这个错误啊

  • 怎样控制backgroundposition里面y轴的数字变化快慢

  • 不行啊 每滚动一下就报错

  • http://www***blogs***/yeminglong/p/4012744.html这个网址是什么鬼??

  • jquery 2 + 版本的使用是:
    1.从这个地址 获取 插件 http://www***blogs.com/yeminglong/p/4012744.html
    2.修改插件中的 curCSS 为 css
    3.修改上面程序的 String(n)
    4.记得添加样式
    .t_num i {
    width: 15px;
    height: 23px;
    display: inline-block;
    background: url(assets/images/number.png) no-repeat;
    background-position: 0 0;
    text-indent: -999em;
    }
    5. 为什么没有字体显示呢?那是因为你没把图片保存到本地!

    OK 之后就可以了

  • 怎么数字显示不出来呢

  • return [parseFloat(res [0] ,10),res [6] ,parseFloat(res [7] ,10),res [8] ]; 这句报错 Uncaught TypeError: Cannot read property '1' of null 使用的是 jquery 1.9.1

  • return [parseFloat(res [9] ,10),res [0] ,parseFloat(res [7] ,10),res [8] ]; 这句报错 Uncaught TypeError: Cannot read property '1' of null 使用的是 jquery 1.9.1

  • return [parseFloat(res [5] ,10),res [6] ,parseFloat(res [7] ,10),res [8] ]; 这句报错 Uncaught TypeError: Cannot read property '1' of null 使用的是 jquery 1.9.1

  • 数字不显示是因为没有背景图片,数字显示是通过CSS定位背景图片的

  • 我把curss改成css也不行,数字显示不出来,只有空的i标签

  • 改了也不行啊 。。。

  • 不行啊 数字不变。。。。

  • 有下载包不?很想用的呢

  • hello

  • 按照上面的来了一次,但数字就是显示不出啦,只有空的i标签,标签里面是没有文本的,怎么解???在线等啊,很着急,哪位大神来解救一下

  • 还真是。。。

  • 直接看你演示页面源代码另存为

  • 怎么没得下载

  • sdasd