从 1 和 0 的字符串中选择随机数并更改颜色

Posted

技术标签:

【中文标题】从 1 和 0 的字符串中选择随机数并更改颜色【英文标题】:Select random number from string of 1's and 0's and change color 【发布时间】:2016-05-19 01:35:18 【问题描述】:

我通过 jQuery 显示了一串随机的 1 和 0。我现在想选择一个随机数并更改它的颜色。使用数组还是 $(div).text() 字符串更好?我可以从中获取一个数字,但是如何将它插入到 div 中?

 var numbArray = [];

 for(i=0; i<10; i++)
 
   var randomNumbers = Math.round(Math.random());
   $('#numbs').prepend(randomNumbers);
   numbArray[i] = randomNumbers;
 

<div id="numbs">0000110111 </div>

上面的 div 是代码的结果,但是我如何选择一个随机项,改变它的颜色,并显示在原始输出中?

谢谢,

【问题讨论】:

您是根据随机数的二进制总和来更改文本颜色吗?我建议使用数组,因为它已经有数字,然后将您的选择分配给var bin,然后$('#numbs').text(bin) _ 将其插入 div_ 意味着? 【参考方案1】:

您需要从数字字符串中选择一个随机索引,并在该特定数字周围附加一些元素以赋予其某种风格。

var number = '0000110111';

var index = Math.floor(Math.random() * number.length);

for(var i = 0; i < number.length; i++) 
  var n = number.charAt(i);
  if(i == index) 
    $('#numbs').append($('<span/>').css('color', 'red').text(n));
   else 
    $('#numbs').append(n);
  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="numbs"></div>

【讨论】:

【参考方案2】:

大家的回答都很好;谢谢!我没有想到附加 DOM 并重新显示。我为每个数字分配了一个 id,然后使用 css 而不附加。我一直在寻找会变成颜色的数字,当所有数字都是那种颜色时,脚本就会停止。我不知道哪种方法效果最好,但这种方法对我有限的人数来说是可以的。

var whiteNumbs =
[0,1,1,0,1,1,0,1,0,1,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,1,1,1,0,0,1,0]

for(var i=0; i<whiteNumbs.length; i++) 

    $("#numbs").append('<span class="white" id="num_' + i + '">' +
     whiteNumbs[i] + '</span>');


function MakeRed()

    var randomNumber = Math.floor(Math.random() * whiteNumbs.length-1);

    var changeCSS = "#num_" + randomNumber;

    $(changeCSS).removeClass('white');
    $(changeCSS).addClass("red");

if ($("#numbs span").hasClass("white") )

    setTimeout(MakeRed,1000);

else

    return false;   


;

MakeRed();

【讨论】:

【参考方案3】:

您可以在某个索引处定位数字,用所需的颜色包装它并重建字符串并使用html()将其设置回div,并使用Math.floor(Math.random() * 10)生成从零到长度的随机数你拥有的角色。

var index = 3;
var originalElementValue;

function colorStringValue(strIndex)

  strIndex = parseInt(strIndex);
  
  var character = originalElementValue.charAt(strIndex);
  $("#numbs").html(originalElementValue.substr(0, strIndex) + "<span style='color:red'>" + character + "</span>" +  originalElementValue.substr(strIndex+1));
  
  



$(document).ready(function()

  originalElementValue = $("#numbs").text();
  colorStringValue(index);
  
  $("#strIndex").click(function()
  
       var rand = Math.floor(Math.random() * 10) + 0  ;
    $("#rand").html(rand);
        colorStringValue(rand);
  
  );


);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button id="strIndex" > Generate Random Number </button>
<br />

Random Number : <span id="rand"></span>

<br />

<div id="numbs">0000110111</div>

【讨论】:

【参考方案4】:

这就是你要找的吗?我只是试了一下。 :)

     var numbArray = [];
     var sample = "<span style='color:#%COLOR%'>%NUM%</span>";
     for(i=0; i<10; i++)
     
       var randomNumbers = Math.round(Math.random());
       var html = sample.replace('%NUM%', randomNumbers);
       var randomColor = Math.round((Math.random()* 100000000 )%16777215).toString(16);
       html = html.replace('%COLOR%', randomColor);
       $('#numbs').prepend(html );
       numbArray[i] = randomNumbers;
     

我假设你也想要随机颜色。

【讨论】:

【参考方案5】:

如果我理解正确的问题,您想为 div 中的特定位置设置颜色。这意味着您必须在 div 内以特定颜色的随机位置创建一个跨度(或另一个 html 元素)。我没有在下面测试过这段代码,但我想你可以这样:(在这个例子中,随机项目的红色)

var randomIndex= Math.floor(Math.random() * 9); //Random number between 0 and 9.
var currentContent = $("#numbs").html(); 
var randomItem= currentContent.charAt(randomIndex);

newContent = '';
for(i=0; i<10; i++) 
    if (i == randomIndex) 
        newContent = newContent + 
        '<span style="background:red;">' + randomItem + '</span>';
    
    else 
        newContent = newContent + currentContent.charAt(i);
    


$("#numbs").html( newContent );

【讨论】:

【参考方案6】:
var numbArray = [];

for(i = 0; i< 10; i++) 
    var randomNumbers = Math.round(Math.random());
    numbArray[i] = randomNumbers;
    $('#numbs').prepend(number);

var randomNumberSelection = numbArray[Math.floor((Math.random() * (numbArray.length-1)) + 1)];

$('#numbs').html("");

var number;
for(number in numbArray) 
    if(number == randomNumberSelection) 
        var colorColorCodedNumber = ""+number;
            colorColorCodedNumber = colorColorCodedNumber.fontcolor("blue");//blue!
        $('#numbs').prepend(colorColorCodedNumber);
     else 
        $('#numbs').prepend(number);
    

我相信您正在寻找与此类似的东西,或者至少这是我从您所要求的内容中得到的。

请注意,在此示例中,您会看到我们清除了元素,然后简单地重复您之前存储的数组。这就是你“更新”它的方式。

【讨论】:

以上是关于从 1 和 0 的字符串中选择随机数并更改颜色的主要内容,如果未能解决你的问题,请参考以下文章

从相同索引的列表元素中选择随机整数并生成列表

如何从随机数组中选择一个随机字符串

更改段落中随机字母的颜色

从 Google 选择并下载随机图片

如何以编程方式圆角并设置随机背景颜色

我想更改随机按钮的颜色,等待 1 秒然后将其更改回默认值,进入 for 循环