数组转字符串&&字符串转数组
[
2015/08/06 16:10 | by 刘新修 ]

熟悉js的朋友很多都遇到过js的数组与字符串相互转换的情况,本文就此作一简单介绍,示例如下:
一、数组转字符串
需要将数组元素用某个字符连接成字符串,示例代码如下:
1 2 3 | var a, b; a = new Array(0,1,2,3,4); b = a.join( "-" ); |
二、字符串转数组
实现方法为将字符串按某个字符切割成若干个字符串,并以数组形式返回,示例代码如下:
1 2 | var s = "abc,abcd,aaa" ; ss = s.split( "," ); // 在每个逗号(,)处进行分解。 |
XML/HTML代码
- <!doctype html>
- <html>
- <head>
- <meta charset="utf-8">
- <link rel="dns-prefetch" href="//hd.youyuan.com">
- <link rel="dns-prefetch" href="//x.youyuan.com">
- <link rel="dns-prefetch" href="//f1.youyuan.com">
- <link rel="dns-prefetch" href="//f2.youyuan.com">
- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
- <meta content="yes" name="apple-mobile-web-app-capable" />
- <meta content="black" name="apple-mobile-web-app-status-bar-style" />
- <meta content="telephone=no" name="format-detection" />
- <title>抽奖结果</title>
- <link href="css/love-qixi.css" rel="stylesheet" type="text/css" />
- <style>
- .ele{ background:url(images/selected.png); display:none}
- .lotteryBox{ width:96%; margin:0 auto;}
- .lotteryBox .lottery{ width:290px; height:290px; margin:0 auto; background:url(images/lottery.png) no-repeat; background-size:100%; position:relative; z-index:101;}
- .lotteryBox .lottery .prize_{ width:25%; height:25%; position:absolute; z-index:102;}
- .lotteryBox .lottery .prize_1{ left:0; top:0;}
- .lotteryBox .lottery .prize_2{ left:25%; top:0;}
- .lotteryBox .lottery .prize_3{ left:50%; top:0;}
- .lotteryBox .lottery .prize_4{ left:75%; top:0;}
- .lotteryBox .lottery .prize_5{ left:75%; top:25%;}
- .lotteryBox .lottery .prize_6{ left:75%; top:50%;}
- .lotteryBox .lottery .prize_7{ left:75%; top:75%;}
- .lotteryBox .lottery .prize_8{ left:50%; top:75%;}
- .lotteryBox .lottery .prize_9{ left:25%; top:75%;}
- .lotteryBox .lottery .prize_10{ left:0%; top:75%;}
- .lotteryBox .lottery .prize_11{ left:0%; top:50%;}
- .lotteryBox .lottery .prize_12{ left:0%; top:25%;}
- .lotteryBox .lottery .selected{ background-image:url(images/selected.png); background-repeat: no-repeat; background-size:90%;}
- .lotteryBox .lottery .prize_1.selected{ background-position: 20% 30%;}
- .lotteryBox .lottery .prize_2.selected{ background-position: 36% 30%;}
- .lotteryBox .lottery .prize_3.selected{ background-position: 40% 30%;}
- .lotteryBox .lottery .prize_4.selected{ background-position: 60% 30%;}
- .lotteryBox .lottery .prize_5.selected{ background-position: 60% 35%;}
- .lotteryBox .lottery .prize_6.selected{ background-position: 60% 35%;}
- .lotteryBox .lottery .prize_7.selected{ background-position: 60% 50%;}
- .lotteryBox .lottery .prize_8.selected{ background-position: 60% 50%;}
- .lotteryBox .lottery .prize_9.selected{ background-position: 36% 50%;}
- .lotteryBox .lottery .prize_10.selected{ background-position: 20% 50%;}
- .lotteryBox .lottery .prize_11.selected{ background-position: 20% 35%;}
- .lotteryBox .lottery .prize_12.selected{ background-position: 20% 35%;}
- </style>
- </head>
- <body>
- <div class="top_blank"></div>
- <nav class="nav">
- <h2 class="pink">抽奖结果</h2>
- <div class="left" onClick="history.go(-1)"> <i class="le_trg"></i></div>
- <div class="right"><!-- <span id="search_sure" class="seach_sure">确定</span>--> </div>
- </nav>
- <div class="ele"></div>
- <div class="blank10"></div>
- <div class="lotteryBox">
- <div class="lottery">
- <div class="prize_ prize_1"></div>
- <div class="prize_ prize_2"></div>
- <div class="prize_ prize_3"></div>
- <div class="prize_ prize_4"></div>
- <div class="prize_ prize_5"></div>
- <div class="prize_ prize_6"></div>
- <div class="prize_ prize_7"></div>
- <div class="prize_ prize_8"></div>
- <div class="prize_ prize_9"></div>
- <div class="prize_ prize_10"></div>
- <div class="prize_ prize_11"></div>
- <div class="prize_ prize_12"></div>
- </div>
- <div class="blank10"></div>
- <div class="upload-btn send-out start_" usable="false">开始抽奖</div>
- </div><!-- lotteryBox -->
- </body>
- <script type="text/javascript" src="//f1.youyuan.com/xfile/www/js/??public/lib/zepto/zepto-1.1.6.js,public/m/ajax-min.js"></script>
- <script type="text/javascript" src="js/all.js"></script>
- <script type="text/javascript">
- var lottery={
- beginning:-1, //从哪个位置【起点】
- prizeNum:-1, //到哪个位置【终点】
- countNum:0, //循环DOM总共有多少个
- bufferNum:60, //转动基本次数:至少转动60次之后才可以停顿
- timer:0, //setTimeout的ID,用clearTimeout清除
- speed:20, //循环DOM转动的速度
- times:0, //向前走过的个数每次+1
- shared:0,
- cNum:0,
- beginFun:function(){
- lottery.times+=1;
- var NTT=lottery.times;
- var datanum=lottery.times;
- var dataccc=Math.ceil(datanum/2)-1;
- if(datanum%2==0){
- $(".game_").addClass("game_on");
- }
- else if(datanum%2!=0){
- $(".game_").removeClass("game_on");
- }
- lottery.rollFun();
- if (lottery.times>lottery.bufferNum&&lottery.prizeNum==lottery.beginning){
- if(lottery.prizeNum==0){
- //alert("恭喜您,中了第5个奖品")
- }else if(lottery.prizeNum==1){
- //alert("恭喜您,中了第5个奖品")
- }else if(lottery.prizeNum==2){
- //alert("恭喜您,中了第5个奖品")
- }else if(lottery.prizeNum==3){
- //alert("恭喜您,中了第5个奖品")
- }else if(lottery.prizeNum==4){
- //alert("恭喜您,中了第5个奖品")
- }else if(lottery.prizeNum==5){
- //alert("恭喜您,中了第5个奖品")
- }else if(lottery.prizeNum==5&&lottery.shared==0&&lottery.cNum==0){
- //alert("恭喜您,中了第5个奖品")
- }else if(lottery.prizeNum==6){
- //alert("恭喜您,中了第5个奖品")
- }else if(lottery.prizeNum==7){
- //alert("恭喜您,中了第5个奖品")
- }
- clearTimeout(lottery.timer);
- lottery.prizeNum=-1;
- lottery.times=0;
- click=false;
- }else{
- if (lottery.times<lottery.bufferNum) {
- lottery.speed-=10;
- }else if(lottery.times==lottery.bufferNum) {
- //var beginning = Math.random()*(lottery.countNum)|0;
- //lottery.prizeNum = 3;
- }else{
- if (lottery.times>lottery.bufferNum&&((lottery.prizeNum==0&&lottery.beginning==7)||lottery.prizeNum==lottery.beginning+1)){
- lottery.speed+=110;
- }else{
- lottery.speed+=20;
- }
- }
- if (lottery.speed<40) {
- lottery.speed=40;
- };
- //console.log(lottery.times+'^^^^^^'+lottery.speed+'^^^^^^^'+lottery.prizeNum);
- lottery.timer=setTimeout(lottery.beginFun,lottery.speed);
- }
- return false;
- },
- initFun:function(className){
- //该模块主要是选择器,最后给起点加上CSS样式
- if ($("."+className).find(".prize_").length>0){
- $objD=$("."+className);
- $childNode=$objD.find(".prize_");
- this.obj=$objD;
- this.countNum=$childNode.length;
- $objD.find(".prize_"+this.index).addClass("selected");
- };
- },
- rollFun:function(){
- //该模块主要是步进值循环移除及添加,到终点后设置Index值为0
- var index=this.beginning;
- var count=this.countNum;
- var objD=this.obj;
- $(objD).find(".prize_"+index).removeClass("selected");
- index+=1;
- if (index>count){
- index=0;
- };
- $(objD).find(".prize_"+index).addClass("selected");
- this.beginning=index;
- return false;
- },
- stopFun:function(index){
- this.prizeNum=index;
- return false;
- }
- };
- //获取整体的宽度并设置子节点宽度
- var _lotteryBoxWidth=$(".lotteryBox").width();
- $(".lottery").css({"width":_lotteryBoxWidth,"height":_lotteryBoxWidth});
- //点击抽奖按钮调用公共方法
- $(".start_").click(function(){
- lottery.initFun('lottery');
- lottery.prizeNum=5;
- lottery.speed=100;
- lottery.cNum=1;
- //开始抽奖执行方法
- lottery.beginFun();
- });
- </script>
- </html>
JS+C33 间隔无缝滚动适合【图片Banner+文字滚动】
[
2015/07/28 15:33 | by 刘新修 ]

XML/HTML代码
- <style>
- #elUl{ border:1px #000 solid; position:absolute; right:10px; top:0;}
- @-webkit-keyframes scro{from{top:0;}to{top:-30px;}}
- </style>
- <script type="text/javascript">
- window.onload=function(){
- var elUl=document.getElementById("elUl");
- //alert(elUl)
- if(elUl!=null){
- setInterval(function(){
- elUl.style.WebkitAnimation='scro 0.5s linear forwards';
- elUl.style.MozAnimation="scro 0.5s linear forwards";
- elUl.style.msAnimation='scro 0.5s linear forwards';
- elUl.style.OAnimation='scro 0.5s linear forwards';
- elUl.style.animation='scro 0.5s linear forwards';
- //oUl.style.transform='translateY(-100px)';
- //oUl.addEventListener("webkitAnimationEnd",end);
- if(elUl.offsetTop<=-30){
- elUl.style.WebkitAnimation='';
- var b=elUl.children[0];
- elUl.appendChild(b);
- //clearInterval(timer)
- }
- },3000);
- }
- }
- </script>
注明:elUl.offsetTop 是检测DOM距离顶部的距离,如果符合条件自动清除CSS3动画,如果左右滚动Banner可以使用:elUl.offsetLeft
JS 事件委托
XML/HTML代码
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta charset="utf-8" />
- <title>js性能优化</title>
- <style>
- #list{ border:1px solid #000;}
- </style>
- </head>
- <body id='list'>
- <ul >
- <li>精通css</li>
- <li>精通js</li>
- <li>精通html</li>
- ......
- </ul>
- </body>
- </html>
- <script type="text/javascript">
- (function(){
- var a=document.getElementById('list');
- a.addEventListener('click',function(e){
- var b = e.target;
- alert(b.innerHTML);
- },false);
- })();
- </script>
JS批量变量转换成图片模版+JS批量遍历表情符号并进行替换
[
2015/07/09 19:50 | by 刘新修 ]

JavaScript代码
- var Expression = (function () {
- return {
- images: [{className:'face_1',text: '微笑'},
- {className:'face_2',text: '害羞'},
- {className:'face_3',text: '喜欢'},
- {className:'face_4',text: '快哭了'},
- {className:'face_5',text: '爱心'},
- {className:'face_6',text: '擦汗'},{className:'face_7',text: '愤怒'},
- {className:'face_8',text: '可爱'},{className:'face_9',text: '小可怜'},{className:'face_10',text: '尴尬'},{className:'face_11',text: '呲牙'},
- {className:'face_12',text: '红唇'},{className:'face_13',text: '难过'},{className:'face_14',text: '亲亲'},{className:'face_15',text: '委屈'},
- {className:'face_16',text: '疑惑'},{className:'face_17',text: '拥抱'},{className:'face_18',text: '再见'},{className:'face_19',text: '咖啡'},
- {className:'face_20',text: '礼物'},{className:'face_21',text: '玫瑰'}],
- initBox: function ($selector) {
- $.each(Expression.images, function () {
- if(this.className=="face_1" || this.className=="face_11"){
- return true;
- }
- var li = $('<li></li>').data('express', this.text).append('<i class="icon '+this.className +'"></i>');
- $selector.append(li);
- });
- },
- replaceHtml: function ($selector) {
- var html = $selector.html();
- $.each(Expression.images, function () {
- var re = new RegExp("\\["+this.text+"\\]","g");
- html = html.replace(re, '<i class="icon ' + this.className + '"></i>');
- });
- $selector.html(html);
- }
- }
- })();
- $(function () {
- $('body').on("tap", '[data-express]', function () {
- var txt = $(this).data('express'), text = $('textarea');
- text.val(text.val() + '[' + txt + ']');
- var len = text.val().length;
- $('#provide').text(len + "/240字");
- text.focus();
- });
- });
- Expression.replaceHtml($('#chat_list'));
- Expression.initBox($('#face'))
JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
[
2015/06/24 09:50 | by 刘新修 ]

网页可见区域宽:document.body.clientWidth
网页可见区域高:document.body.clientHeight
网页可见区域宽:document.body.offsetWidth (包括边线的宽)
网页可见区域高:document.body.offsetHeight (包括边线的宽)
网页正文全文宽:document.body.scrollWidth
网页正文全文高:document.body.scrollHeight
网页被卷去的高:document.body.scrollTop
网页被卷去的左:document.body.scrollLeft
网页正文部分上:window.screenTop
网页正文部分左:window.screenLeft
屏幕分辨率的高:window.screen.height
屏幕分辨率的宽:window.screen.width
屏幕可用工作区高度:window.screen.availHeight
屏幕可用工作区宽度:window.screen.availWidth
HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth
scrollHeight: 获取对象的滚动高度。
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象的滚动宽度
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置
event.clientX 相对文档的水平座标
event.clientY 相对文档的垂直座标
event.offsetX 相对容器的水平坐标
event.offsetY 相对容器的垂直坐标
document.documentElement.scrollTop 垂直方向滚动的值
event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量
IE,FireFox 差异如下:
IE6.0、FF1.06+:
clientWidth = width + padding
clientHeight = height + padding
offsetWidth = width + padding + border
offsetHeight = height + padding + border
IE5.0/5.5:
clientWidth = width - border
clientHeight = height - border
offsetWidth = width
offsetHeight = height
(需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)
网页可见区域宽: document.body.clientWidth
网页可见区域高: document.body.clientHeight
网页可见区域宽: document.body.offsetWidth (包括边线的宽)
网页可见区域高: document.body.offsetHeight (包括边线的高)
网页正文全文宽: document.body.scrollWidth
网页正文全文高: document.body.scrollHeight
网页被卷去的高: document.body.scrollTop
网页被卷去的左: document.body.scrollLeft
网页正文部分上: window.screenTop
网页正文部分左: window.screenLeft
屏幕分辨率的高: window.screen.height
屏幕分辨率的宽: window.screen.width
屏幕可用工作区高度: window.screen.availHeight
屏幕可用工作区宽度: window.screen.availWidth
-------------------
技术要点
本节代码主要使用了Document对象关于窗口的一些属性,这些属性的主要功能和用法如下。
要得到窗口的尺寸,对于不同的浏览器,需要使用不同的属性和方法:若要检测窗口的真实尺寸,在Netscape下需要使用Window的属性;在IE下需要 深入Document内部对body进行检测;在DOM环境下,若要得到窗口的尺寸,需要注意根元素的尺寸,而不是元素。
Window对象的innerWidth属性包含当前窗口的内部宽度。Window对象的innerHeight属性包含当前窗口的内部高度。
Document对象的body属性对应HTML文档的标签。Document对象的documentElement属性则表示HTML文档的根节点。
document.body.clientHeight表示HTML文档所在窗口的当前高度。document.body. clientWidth表示HTML文档所在窗口的当前宽度。
XML/HTML代码
- 实现代码
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>请调整浏览器窗口</title>
- <meta http-equiv="content-type" content="text/html; charset=gb2312">
- </head>
- <body>
- <h2 align="center">请调整浏览器窗口大小</h2><hr>
- <form action="#" method="get" name="form1" id="form1">
- <!--显示浏览器窗口的实际尺寸-->
- 浏览器窗口 的 实际高度: <input type="text" name="availHeight" size="4"><br>
- 浏览器窗口 的 实际宽度: <input type="text" name="availWidth" size="4"><br>
- </form>
- <script type="text/javascript">
- <!--
- var winWidth = 0;
- var winHeight = 0;
- function findDimensions() //函数:获取尺寸
- {
- //获取窗口宽度
- if (window.innerWidth)
- winWidth = window.innerWidth;
- else if ((document.body) && (document.body.clientWidth))
- winWidth = document.body.clientWidth;
- //获取窗口高度
- if (window.innerHeight)
- winHeight = window.innerHeight;
- else if ((document.body) && (document.body.clientHeight))
- winHeight = document.body.clientHeight;
- //通过深入Document内部对body进行检测,获取窗口大小
- if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth)
- {
- winHeight = document.documentElement.clientHeight;
- winWidth = document.documentElement.clientWidth;
- }
- //结果输出至两个文本框
- document.form1.availHeight.value= winHeight;
- document.form1.availWidth.value= winWidth;
- }
- findDimensions();
- //调用函数,获取数值
- window.onresize=findDimensions;
- //-->
- </script>
- </body>
- </html>
源程序解读
(1)程序首先建立一个表单,包含两个文本框,用于显示窗口当前的宽度和高度,并且,其数值会随窗口大小的改变而变化。
(2)在随后的JavaScript代码中,首先定义了两个变量winWidth和winHeight,用于保存窗口的高度值和宽度值。
(3)然后,在函数findDimensions ( )中,使用window.innerHeight和window.innerWidth得到窗口的高度和宽度,并将二者保存在前述两个变量中。
(4)再通过深入Document内部对body进行检测,获取窗口大小,并存储在前述两个变量中。
(5)在函数的最后,通过按名称访问表单元素,结果输出至两个文本框。
(6)在JavaScript代码的最后,通过调用findDimensions ( )函数,完成整个操作。
原生JS实现AJAX、JSONP及DOM加载完成事件
[
2015/06/19 16:04 | by 刘新修 ]

JavaScript代码
- ajax({
- url:"http://192.168.66.90:8080/php/test5.php",
- type:"POST",
- data:{GUID:"288350897",subFlag:"1"},
- dataType:"jsonp",
- callback:"Jsoncallback",
- success:function(data){
- if(data.sex==0){
- var userSex="帅哥";
- }
- if(data.sex==1){
- var userSex="美女";
- }
- if(data.switch==0){
- $(".Mbox .mailInfo .text_").html('<span style="color:#fbff83">'+data.mailInfo+'</span>封'+userSex+'来信');
- $(".Mbox").addClass("ty");
- mbox.addEventListener("webkitAnimationEnd",function(){ //动画结束时事件
- var timer=setInterval(function(){
- if(mbox.offsetTop==-60){
- mbox.className='Mbox tyy';
- clearInterval(timer)
- }
- },1000)
- },false);
- }
- //alert(data.switch)
- },
- fail:function(status){
- // 此处放失败后执行的代码
- }
- });
- /***********************************
- 公共ajax方法支持跨越请求
- ************************************/
- function ajax(options) {
- options = options||{};
- if (!options.url||!options.callback){
- throw new Error("参数不合法");
- }
- //创建 script 标签并加入到页面中
- var callbackName=('jsonp_'+Math.random()).replace(".","");
- var oHead=document.getElementsByTagName('head')[0];
- options.data[options.callback]=callbackName;
- var params=formatParams(options.data);
- var oS=document.createElement('script');
- oHead.appendChild(oS);
- //创建jsonp回调函数
- window[callbackName]=function(json){
- oHead.removeChild(oS);
- clearTimeout(oS.timer);
- window[callbackName]=null;
- options.success&&options.success(json);
- };
- //发送请求
- oS.src=options.url+'?'+params;
- //超时处理
- if(options.time){
- oS.timer=setTimeout(function(){
- window[callbackName]=null;
- oHead.removeChild(oS);
- options.fail&&options.fail({message:"超时"});
- },time);
- }
- };
- //格式化参数
- function formatParams(data){
- var arr=[];
- for(var name in data){
- arr.push(encodeURIComponent(name)+"="+encodeURIComponent(data[name]));
- }
- return arr.join('&');
- }
jQuery制作从左到右从新排列内容动画特效
[
2015/06/17 14:27 | by 刘新修 ]

XML/HTML代码
- <!doctype html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>jQuery制作从左到右从新排列内容动画特效</title>
- <style>
- body{ height: 3000px; padding: 0; margin: 0; }
- div{ background: #000; margin: 20px 0; width: 100px; height: 30px; color: #fff; line-height: 30px; text-align: center; }
- </style>
- </head>
- <script src="js/jquery.min.js"></script>
- <body>
- <div class="op1">111</div>
- <div class="op2">222</div>
- <div class="op3">333</div>
- <div class="op4">444</div>
- <div class="op5">555</div>
- <div class="op6">666</div>
- <div class="op7">777</div>
- <input type="button" value="stop!!!" />
- <script>
- var _width = ($(document).width() - $('div').width()) + "px";
- var animateList=[
- function(){ $('.op1').delay(500).animate({marginLeft:_width},500,queueList); },
- function(){ $('.op2').delay(300).animate({marginLeft:_width},500,queueList); },
- function(){ $('.op3').delay(300).animate({marginLeft:_width},500,queueList); },
- function(){ $('.op4').delay(700).animate({marginLeft:_width},500,queueList); },
- function(){ $('.op5').delay(300).animate({marginLeft:_width},500,queueList); },
- function(){ $('.op6').delay(200).animate({marginLeft:_width},500,queueList); },
- function(){ $('.op7').delay(300).animate({marginLeft:_width},500,function(){ alert('动画队列结束'); } );}
- ];
- $(document).queue('_queueList',animateList);
- var queueList=function(){
- $(document).dequeue('_queueList');
- };
- queueList();
- $(':button').click(function(){
- $(document).clearQueue('_queueList');
- });
- </script>
- </body>
- </html>
JSON 常用类型处理
[
2015/06/16 11:54 | by 刘新修 ]

JavaScript代码
- var str='{"weatherinfo": [{"city": "北京","city_en": "beijing", "cityid": "101130101","date": "","date_y": "2014年1月23日", "wind6": "微风"}]}';
- var obj=JSON.parse(str);
- var yy=JSON.stringify(obj);
- alert(yy)
JS设置数组随机取值,支持多个不重复【实例】
[
2015/06/12 18:10 | by 刘新修 ]

JS设置数组随机取值,支持多个不重复【实例】
XML/HTML代码
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>无标题文档</title>
- </head>
- <body Arrdata="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33">
- </body>
- <script type="text/javascript" src="http://code.liuxinxiu.com/lib/zepto/zepto-1.1.6.js"></script>
- <script language="javascript">
- //从一个给定的数组arr中,随机返回num个不重复项
- function getArrayItems(arr, num) {
- //新建一个数组,将传入的数组复制过来,用于运算,而不要直接操作传入的数组;
- var temp_array = new Array();
- for (var index in arr) {
- temp_array.push(arr[index]);
- }
- //取出的数值项,保存在此数组
- var return_array = new Array();
- for (var i = 0; i<num; i++) {
- //判断如果数组还有可以取出的元素,以防下标越界
- if (temp_array.length>0) {
- //在数组中产生一个随机索引
- var arrIndex = Math.floor(Math.random()*temp_array.length);
- //将此随机索引的对应的数组元素值复制出来
- return_array[i] = temp_array[arrIndex];
- //然后删掉此索引的数组元素,这时候temp_array变为新的数组
- temp_array.splice(arrIndex, 1);
- } else {
- //数组中数据项取完后,退出循环,比如数组本来只有10项,但要求取出20项.
- break;
- }
- }
- return return_array;
- }
- //测试
- var ArrData=$("body").attr("Arrdata");
- //var ArrList=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33];
- var data=ArrData.split(",");//已经是数组,直接可以用str[0]去取了
- //alert(str[1])
- //alert(getArrayItems(arr,2));
- var html=getArrayItems(data,2);
- for(var i=0;i<html.length;i++){
- alert(html[i])
- }
- document.write(html)
- </script>
- </html>