应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

js给不同用户随机显示不同颜色

8391人阅读 2020/11/19 11:34 总访问:5182702 评论:2 收藏:0 手机
分类: 前端

彼年豆蔻,谁许谁地老天荒。


首先js随机产生颜色

思路就是随机产生6个16进制的数字即可

  1. //js随机产生颜色
  2. function randomColor({
  3.     var str = '#';
  4.     for (var i = 0; i < 6; i++) {
  5.         str += Math.floor(Math.random() * 16).toString(16);
  6.     }
  7.     return str;
  8. }


不同用户随机显示不同颜色思路分析:

第一步:如果有两个用户,动态产生两个颜色,存储在键值对里边    [用户id,用户颜色(随机生成)]

              如果有n个用户,动态产生n个颜色


html结构如下:放了一个userid的自定义属性

键值对我们可以使用两个数组来模拟实现,只要是一一对应就类似一个键值对,代码如下:

  1.     //js随机产生颜色
  2.     function randomColor({
  3.         var str = '#';
  4.         for (var i = 0; i < 6; i++) {
  5.             str += Math.floor(Math.random() * 16).toString(16);
  6.         }
  7.         return str;
  8.     }
  9.     //检查数组里边的元素是否出现过
  10.     function checkrepeter(array, item{
  11.         for (var i = 0; i < array.length; i++) {
  12.             //如果有重复就返回ture
  13.             if (array[i] == item)
  14.                 return true;
  15.         }
  16.         return false;
  17.     }
  18.     //找到用户id所在数组的下表
  19.     function findUserIdIndex(array, userid{
  20.         for (var i = 0; i < array.length; i++) {
  21.             //找到位置就返回下标
  22.             if (array[i] == userid)
  23.                 return i;
  24.         }
  25.     }
  26. /*第一步:如果有两个用户,动态产生两个颜色,存储在键值对里边    [用户id,用户颜色(随机生成)]
  27.             如果有n个用户,动态产生n个颜色
  28.               
  29.             */
  30. var logItem = document.getElementsByClassName("logItem");
  31. //定义存放颜色的数组
  32. var colors = new Array();
  33. //定义用户id的数组
  34. var userids = new Array();
  35. for (var i = 0; i < logItem.length; i++) {
  36.     var userId = logItem[i].getAttribute("userid");
  37.     if (!checkrepeter(userids, userId)) {
  38.         //向存放用户id数组添加值
  39.         userids.push(userId);
  40.         //给用户id对应添加一个颜色。可以使用两个数组,只要是一一对应就类似一个键值对
  41.         colors.push(randomColor());
  42.     }
  43. }
  44. console.log(userids);
  45. console.log(colors);



第二步:使用用户id去取颜色即可
代码如下:

  1. //第二步:使用用户id去取颜色即可
  2. for (var i = 0; i < logItem.length; i++) {
  3.     var userId = logItem[i].getAttribute("userid");
  4.     //1:通过用户id找到这个用户id是在用户数组里边的下标
  5.     var userIndex = findUserIdIndex(userids, userId);
  6.     console.log(userIndex);
  7.     //2:找到下标去对应颜色就可以了
  8.     logItem[i].style.backgroundColor = colors[userIndex];
  9. }


下面贴一下使用键值对的做法要简单一些:

  1.     //不同用户随机不同颜色
  2.     function randomColor({
  3.         var str = '#';
  4.         for (var i = 0; i < 6; i++) {
  5.             str += Math.floor(Math.random() * 16).toString(16);
  6.         }
  7.         return str;
  8.     }
  9.     var colors = [];
  10.     var container = document.getElementById("container");
  11.     var divs = container.getElementsByClassName("logItem");
  12.     for (var i = 0; i < divs.length; i++) {
  13.         var userid = divs[i].getAttribute("userid");
  14.         if (!colors[userid]) {
  15.             colors[userid] = randomColor();
  16.         }
  17.        
  18.     }
  19.     for (var i = 0; i < divs.length; i++) {
  20.         divs[i].style.backgroundColor = colors[divs[i].getAttribute("userid")];
  21.     }


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

是伍尚金哇_v

2020/11/19 21:59:15

你这个代码块应该用的不是markdown的编辑器吧

剑轩:@是伍尚金哇_v恩哇...这个是用的html编辑器写的....markdown编辑器那个代码样式后面在加一下

2020/11/19 22:35:51 回复

js与Controller中分割字符串的方法

js: varstr=OpenRule; varstrs=newArray(); strs=str.split(&quot;,&quot;); for(vari=0;i&lt;strs.length;i++){ $(&q...

珍藏!! js CSS不传之秘集合

&lt;!--其中5指每隔5秒刷新一次页面--&gt; &lt;metahttp-equiv=&quot;refresh&quot;content=&quot;5&quot;&gt; =========...

jsON对象和jsON字符串的区别

JSON对象是直接可以使用JQuery操作的格式,如C#中可以用对象(类名)点出属性(方法)一样var str2 = { &quot;name&quot;: ...

对象转jsON

/// &lt;summary&gt; /// 对象转json /// &lt;/summary&gt; public static string ToJson(object jsonObject) ...

来!!!今天玩 json

别怪我懒,其实我是真的懒///&lt;summary&gt; ///List转成json ///&lt;/summary&gt; ///&lt;typeparamname=&quot;T&quot...

js遍历localStorage的键值对

//遍历本地存储localStorage for(vari=0;i&lt;localStorage.length;i++){ varkey=localStorage.key(i);//获取本地存储的K...

拓展js通用方法来对应c操作

有很多时候,js不能像c#一样有那样多的方法操作,但是我们可以自己写一些方法,让他拥有:比如最常见的一些:注意:js里的...

js的localStorage

localStorage的优势1、localStorage拓展了cookie的4K限制2、localStorage会可以将第一次请求的数据直接存储到本地,这个相...

js监听input、keydown,有输入法时打字完成后触发事件

在给输入框绑定input或keydown事件时预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件可以用到c...

js截取两个字符中间的字符串

使用正则表达式来取比如我们要取brush:js;toolbar:false 这个字符串冒号和分号中间的字符串可以varclassname=&quot;brush:j...

Vue.js+Layer实现表格数据绑定与更新

一:使用Vue.js绑定好数据与更新事件 使用v-on绑定好事件,在事件里边直接把该行数据传递进去,在更新方法里边就可以直接...

js使用正则进行常用验证

?:问号前面的数字匹配0次或1次,也就是懒惰匹配,最多匹配一次+:匹配1次到无穷次*:匹配0次到无穷次验证只能:数字、字母...

js字符串的替换

vartitle=&quot;我是你的大表哥&quot;; title=title.replace(&quot;大表哥&quot;,&quot;大表妹&quot;); alert(title);输...

Vue.js 实现省市联动

HTML代码&lt;divid=&quot;pro_citys&quot;&gt; 省:&lt;selectid=&quot;provice&quot;v-on:change=&quot;prochange()&quo...

Vue.js常见问题

一:花括号当做字符串显示的问题1:检查下绑定到vue.js的id是否重复,如果id重复了,就有可能存在这种问题,因为有可能把数...

vue.js常用指令

v-html可以把字符串当成一个html来渲染,而不是原样输出Html类似.net mvc中的@Html.Raw()方法&lt;divv-html=&quot;item.tit...