今天碰到一个需求,一个页面显示赞助厂商的信息,但是厂商要求排序要随机排,因为是个静态页面不是读取数据库的,所以打算用js来控制

 var arr = new Array('张三', '李四', '王五', '赵六', '田七', '哈哈', '呵呵', '么么');  

var brr = new Array();
var len1 = arr.length; var str = "";
//debugger;
while (brr.length <= 8)
{
var index = parseInt(Math.random() * (len1));
for (var j = 0; j < brr.length; j++) {
if (brr.indexOf(arr[index])==-1)
{
brr.push(arr[index]);
//if (arr[index] != undefined) {
str += arr[index] + "、";
//}
arr.splice(index, 1);
}
} if (brr.length==0) {
brr.push(arr[index]);
//if (arr[index] != undefined) {
str += arr[index] + "、";
//}
arr.splice(index, 1);
}
} console.log(str)

嘴笨不知道怎么描述思路,我就把几个版本都放上来,大家慢慢看应该是可以看明白的

   while (brr.length <= arr.length)
{
var index = parseInt(Math.random() * (len1));
if (brr.length==0) {
brr.push(arr[index]);//第一次添加
} if (arr[index] != undefined) { //因为加一个后会去掉数据源的一个选项,所以有时候会有索引没值
brr.push(arr[index]);
str += arr[index] + "、";
arr.splice(index, 1);
}
}

这样就可以实现不重复随机排序指定内容了,但是还是有undefined的情况

 while (arr.length) {
str += arr.splice(parseInt(Math.random() * arr.length), 1)[0] ;
}

最终版本,我随机删除其中一个元素,然后把这个元素输出,就避免了undefined的情况了,但是这种做法的弊端是这时候arr数组就没有数据了,如果需要做定时刷新就不可以了,必须是手动刷新才会随机加载,如果需要做定时刷新还是需要新建一个数组,然后往里面插入元素,加一个定时器就可以实现定时刷新内容了。因为我的需求是手动刷新,所以用了最后的版本简洁大方。做了整整一下午大概改版了七八次,感觉还不错发个博客小小得瑟下,希望帮到别人

javascript 随机显示指定内容的更多相关文章

  1. gridView RowDataBound事件 鼠标经过行颜色变化及根据字段值显示指定内容

    protected void gvBarInfo_RowDataBound(object sender, GridViewRowEventArgs e)        {            if ...

  2. winform里面网页显示指定内容

    今天有个同事问了一下我,怎么在winform里面打开网页啊?我们都是基于C/S的开发,很少接触winform,所以我当时就懵了,实在不知道怎么回答,所以索性说不知道.但是我又想了想,这个应该是个很简单 ...

  3. 只访问tomcat,不访问项目时,显示指定内容。

      1.情景展示 我们知道,将javaWeb项目部署到tomcat后,访问该项目的url路径构成是: 网路协议+"://"+ip地址+":"+tomcat设定的 ...

  4. SendTextMessage如何打开记事本并显示指定内容

    procedure TForm1.Button1Click(Sender: TObject); var hEdit: HWND; str: string; begin str := '准备要添加到记事 ...

  5. error_page 改变状态码为新的状态码,并显示指定内容

    server { listen 80; server_name www.espressos.com; location / { root /data0/www/bbs; index index.htm ...

  6. Javascript 随机显示数组元素

    $(function(){ var wx_arr = ['gb3055','gb6365']; var storage = window.localStorage; function random_w ...

  7. JS实现的随机显示图片

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  8. 如是使用JS实现页面内容随机显示

    之前有个客户咨询我,因为他们公司的业务员有多个人,但公司网站的联系方式板块里只够放一个人的信息,所以就想能不能实现这个联系方式信息随机显示,对于业务或客服人员来说也能做到分配均匀公平.本文我们将和大家 ...

  9. javascript怎么获取指定url网页中的内容

    javascript怎么获取指定url网页中的内容 一.总结 一句话总结:推荐jquery中ajax,简单方便. 1.js能跨域操作么? javascript出于安全机制不允许跨域操作的. 二.用ph ...

随机推荐

  1. jqGrid Demos

    http://www.trirand.com/blog/jqgrid/jqgrid.html http://www.cnblogs.com/huozhicheng/archive/2012/11/11 ...

  2. js运算符单竖杠“|”的作用

    在js整数操作的时候,相当于去除小数点,parseInt.在正数的时候相当于Math.floor(),负数的时候相当于Math.ceil() 注: 1. Math.ceil()用作向上取整. 2. M ...

  3. 第三章 Python 的容器: 列表、元组、字典与集合

    列表是Python的6种内建序列(列表,元组,字符串,Unicode字符串,buffer对象,xrange对象)之一, 列表内的值可以进行更改,操作灵活,在Python脚本中应用非常广泛 列表的语法格 ...

  4. 我的Linux软件集

    把我常用的软件记下来,以后重装安装的时候方便一些- 这个博文会不断更新的- 开发工具类 Monodevelop 编写C#控制台程序和GTK#窗口程序,很好,虽然没有VS强大,但是够用了 CodeBlo ...

  5. 在ubuntu linux 中编写一个自己的bash脚本

    在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pm为例(play music)),来实现音乐的播放.注:本人ununut中安装了audacious ...

  6. Ubuntu 16.04安装配置Samba服务

    Samba是开源软件,用来让Linux系统与Windows系统的SMB/CIFS网络协定做连结,实现Windows主机与Linux服务器之间的资源共享.Samba服务为两种不同的操作系统架起了一座桥梁 ...

  7. <C++Primer>第四版 阅读笔记 第三部分 “类和数据抽象”

    类定义了数据成员和函数成员:数据成员用于存储与该类类型的对象相关联的状态:而函数成员则负责执行赋予数据意义的操作. 第12章 类 一个类可以包含若干公有的.私有的和受保护的部分:在public部分定义 ...

  8. 理解Node.js的事件轮询

    前言 总括 : 原文地址:理解Node.js的事件轮询 Node小应用:Node-sample 智者阅读群书,亦阅历人生 正文 Node.js的两个基本概念 Node.js的第一个基本概念就是I/O操 ...

  9. c#.net的网站出现“正在中止线程””异常的原因和解决方法

    出现“正在中止线程”异常通常都是由于以下三种原因导致引起,给出解决方案如下: 解决方案: 1.针对Response.End,调用 HttpContext.Current.ApplicationInst ...

  10. jQuery --checkbox全选和取消全选简洁高效的解决办法

    最近在公司做了一个小项目,其中有一个全选和取消全选的这么一个模块,搞了半天找不到一种最佳的解决方案!后来通过各种努力找到了一种简洁高效的解决办法,这里想和大家分享一下.有问题的话,还望各路大神指导一二 ...