随机化网页上的图像和颜色对

Randomize Image and Color Pair on Webpage

我希望在刷新时随机化我网页上的图像和颜色对。例如刷新时会显示"img A"和"#999;",接下来可能会显示"img B"和"#fff;";基本上,一张图片仅与一种颜色配对,并且该颜色永远不会与不同的图片搭配。

棘手的部分是我需要在 css/div "a:hover{" 下随机化颜色,并在不同的 id 下随机化图像(如果有帮助,我将其命名为 #scanner)

到目前为止我有这个,但它不起作用。我对 javascript 不是很有经验,所以我完全被卡住了(尽管我可能只是错过了一些非常简单的东西)。

<script>

 var colors = [["#CCCCCC",     "http://static.tumblr.com/ixbct68/1y1niuvxl/wwo.gif"], ["#7b9fb9",     "http://static.tumblr.com/ixbct68/2bzniuwcf/nottarget.gif"], ["#3df756",     "http://static.tumblr.com/ixbct68/eFxniuwqz/nonlethal.gif"]];

  var r = Math.floor(Math.random() * 4);
  document.getElementById("scanner").innerHTML = "<font   color=\"" +     pairs[r][0] + "\"<img src=\"" + pairs[r][1] +   "\">"

  text.css('color', colors[col][0]);
  </script>



<div id="scanner">
<script>
    document.getElementById("scanner").innerHTML = "<img src = \"" +     colors[col][1] + "\">"
  </script>
  </div>

您的数组中只有三个项目,但您正在创建一个介于 0 和 3 之间的随机数(四个不同的值),因此有时它会尝试获取数组外的项目。创建一个介于 0 和 2 之间的随机数,或者更好的是只使用数组的长度,以便它自动调整到你放入数组的任何内容:

var r = Math.floor(Math.random() * colors.length);

之后您尝试访问一个尚不存在的元素。由于该元素在页面中更靠下,因此在脚本运行时尚未解析其代码。您应该将代码放在元素之后,或者放在页面的 load 事件中。

该代码使用了一个不存在的名为 pairs 的数组,并且它生成的 HTML 代码是错误的。有一个没有右括号 (>) 和结束标记 (</font>) 的 font 元素(顺便说一下,它已被弃用)。你会使用这样的东西:

document.getElementById("scanner").innerHTML = '<span style="color:' + colors[r][0] + '"><img src="' + colors[r][1] + '"></span>';

然后有一些代码使用了一个不存在的变量text

然后您有了要更改的元素,以及该元素中的更多脚本。在元素仍在解析时(即在结束标记之前)更改元素可能会产生一些意外或不可预测的行为,例如,结束标记可能会产生另一个元素,或者作为其他元素的结束元素。

元素中的脚本重复了一些较早的脚本,但没有使用颜色。

让我们将代码按正确的顺序排列,并清除不需要的内容:

<div id="scanner"></div>

<script>

  var colors = [
    ["#CCCCCC", "http://static.tumblr.com/ixbct68/1y1niuvxl/wwo.gif"],
    ["#7b9fb9", "http://static.tumblr.com/ixbct68/2bzniuwcf/nottarget.gif"],
    ["#3df756", "http://static.tumblr.com/ixbct68/eFxniuwqz/nonlethal.gif"]
  ];

  var r = Math.floor(Math.random() * colors.length);
  document.getElementById("scanner").innerHTML = '<span style="color:' + colors[r][0] + '"><img src="' + colors[r][1] + '"></span>';

</script>