javascript - 如何同时创建具有随机颜色的容器?

标签 javascript jquery html css

我的以下代码本质上是根据用户的输入创建许多框。
但是我想确保它们在创建时都具有随机颜色。

我还想确保对于创建的每个新框,它将框的左边距设置为前一个框的左边距的两倍(其中第一个框的左边距为 5px)。

我不知道该怎么做!

function getNewRandomColor()
{
  var myArray = ['red', 'green', 'blue'];    
  var rand = myArray[Math.floor(Math.random() * myArray.length)];
  document.getElementById("container").style.backgroundColor = rand;
}

var empty = true;

function setup()
{
  if (!empty)
  {
    remove();
  }

  size = document.getElementById("input").value

  var container = document.getElementById("container");

  // create boxes
  for (var i = 0; i < size; i++)
  {
    // Create a box
    var box = document.createElement("div");

    // insert number
    box.innerHTML = i+1;

    // Add into the document
    container.appendChild(box);
    empty = false;
  }    
}

function remove()
{
  // Get all the generated boxes
  var boxes = document.getElementById("container").children;

  // Iterate through all boxes
  for (var x = 0; x < boxes.length;) 
  {
    var bA = boxes[x];
    bA.remove();
  } 
}
body {
  font-family:sans-serif;
  font-weight:700;
  font-size:15pt;
} 
#container div, div.selected {
  width: 2em;
  height: 1.5em;
  float: left;
  padding: 1em;
  margin: 1vw;
  padding-top:1.5em;
  text-align: center;
  transition: background 1s;
}
div, .unselected {
  background: #a0aeef;
}
<input type="number" name="input" id="input">

<button onclick="setup();">Draw</button>
<button onclick="remove();">Remove</button>

<div id="container"></div>

最佳答案

您只能检索数组键并将其用作类名,一旦元素成为文档 dom 的一部分,就可以应用动态样式:

例如

function getNewRandomColor(e)
{
  var myArray = ['red', 'green', 'blue'];    
  var rand = myArray[Math.floor(Math.random() * myArray.length)];
  return rand;
}

var empty = true;

function setup()
{
  if (!empty)
  {
    remove();
  }

  size = document.getElementById("input").value

  var container = document.getElementById("container");
 
  // create boxes
  for (var i = 0; i < size; i++)
  {
    // Create a box
    var box = document.createElement("div");
    var rdmClass= getNewRandomColor();
    box.setAttribute("class",rdmClass);
    marginVar = 10*i;
    box.setAttribute("style","--margR:" + marginVar  + ";border:solid/* here you bg with hex value to be updated " );
    // insert number
    box.innerHTML = i+1;
    // Add into the document
    container.appendChild(box);
    empty = false;
  }    
}

function remove()
{
  // Get all the generated boxes
  var boxes = document.getElementById("container").children;

  // Iterate through all boxes
  for (var x = 0; x < boxes.length;) 
  {
    var bA = boxes[x];
    bA.remove();
  } 
}
body {
  font-family:sans-serif;
  font-weight:700;
  font-size:15pt;
} 
#container div, div.selected {
  width: 2em;
  height: 1.5em;
  float: left;
  padding: 1em;
  margin: 1vw;
  padding-top:1.5em;
  text-align: center;
  transition: background 1s;
}
div, .unselected {
  background: #a0aeef;
}

#container div{
  margin-right:calc(var(--margR)*1px); /* updated from the style attribute added from js loop */
}

.red {background:red;}
.green {background:green;}
.blue {background:blue;}
<input type="number" name="input" id="input">

<button onclick="setup();">Draw</button>
<button onclick="remove();">Remove</button>

<div id="container"></div>

关于javascript - 如何同时创建具有随机颜色的容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60478710/

相关文章:

html - 如何在同一行上获取两个 h4 标签?

javascript - JQuery - 根据 tabindex 在 enter 上的输入之间切换焦点

java - 网络爬行 - 用 Ja​​va 识别网页上的主要内容

javascript - 从控制台提取 console.log 方法

javascript - 默认情况下,如何让 HTML 文件从底部显示

jquery - 如何使用jquery在表中查找td的父tr?

javascript - 如何使用 highchart 在密集系列中突出垂直绘制线?

javascript - 获取最近的 anchor 标记的值和href?

javascript - 如何重构重复的条件 Vue.js 代码?

javascript - 将图标添加到 js.erb.html 中的 link_to?