Search code examples
jquerycssbackground-color

Random predefined background color and text color on 2 divs


I am looking to create a Jquery script that will randomly choose a colour from a list of 10, and then apply it as a background color to one div, and the color of a h1 tag.

So far I have this which makes a random color:

$(document).ready(function() { var hue = 'rgb(' + (Math.floor((256-199)*Math.random()) + 200) + ','
                 + (Math.floor((256-199)*Math.random()) + 200) + ','
                 + (Math.floor((256-199)*Math.random()) + 200) + ')';
$('#controls-wrapper').css("background-color", hue);
$('h1').css("color", hue);});

but how can I make this choose randomly from a list of 10 colors? I found this, but not sure how you would apply this to bg color div and h1 tag.

$("#controls-wrapper").each(function(){ 
var colors = ["#CCCCCC","#333333","#990099"]; 
var rand = Math.floor(Math.random()*colors.length); 
$(this).css("background-color", colors[rand]);});

Solution

  • I think what you are trying to accomplish is this:

    Assuming you have a HTML page like this:

    <html>
    <body>
      <h1>Hello World!</h1>
      <div id="controls-wrapper>some text</div>
    </body>
    
    $(document).ready(function(){
      var colors = ["#CCCCCC","#333333","#990099"];                
      var rand = Math.floor(Math.random()*colors.length);           
      $('#controls-wrapper').css("background-color", colors[rand]);
      $('h1').css("color", colors[rand]);
    });
    

    After you have created your colors array you then get a random number corresponding to the index of a color.

    Now that you have a random index you can use it to set the background-color, or text color of an object.

    If you wanted the colors to be different for each then you would just call

    rand = Math.floor(Math.random()*colors.length);
    

    again before setting the color of your next element.

    And finally by calling $('h1').css("color", colors[rand]); you will set the color on all H1 elements on the page, you want it to be specific set an ID or class value on the H1 and then use $('h1.myclass').css("color", colors[rand]); OR $('#ID_for_my_H1').css("color", colors[rand]);