javascript - 使用 javascript 需要在整个页面中随机且唯一的数字

标签 javascript

我正在使用 javascript 将图像包装在我的网页上,但我想为每个图像分配一个唯一但随机的类名。下面的代码分配一个随机的类名,但它为每个图像分配相同的类名。如何更改代码以允许每个图像具有唯一且随机的类名称?

var randomnumber=Math.floor(Math.random()*10)

var bphotorightnomargin = document.getElementsByClassName("body-photo alignright no-margin-left");
$(bphotorightnomargin).toggleClass( "body-photo alignright no-margin-left" ).wrap( "<div class='body-photo-wrap body-photo-" + randomnumber + " alignright no-margin-left'></div>" );

最佳答案

看起来您正在重复使用您设置随机数的同一变量。将其包装在一个函数中,然后调用该函数:

function getRandomNumber() {
  return Math.floor(Math.random()*10);
}

那么你可以这样做:

$(bphotorightnomargin).each(function() {
  $(this).toggleClass( "body-photo alignright no-margin-left" )
  .wrap( "<div class='body-photo-wrap body-photo-" 
    + getRandomNumber() 
    + " alignright no-margin-left'></div>" );
});

请注意,我添加了 .each,它将迭代您的 html 元素列表,为每个元素应用一个唯一的类。

但同一个数字仍有可能出现多次。就像你可能会得到这个数字 5、3 次。您可以将已经获得的数字存储在数组中,并检查以确保该数字不会再次出现。

var existingNumbers = [];

function getRandomNumber() {
  var randomNum = Math.floor(Math.random()*10);
  while(!isUnique(randomNum)) {
    randomNum = Math.floor(Math.random()*10);
  }
  existingNumbers.push(randomNum);
  return randomNum;
}

function isUnique(number) {
  var length = existingNumbers.length;
  for(var i = 0; i < length; i++) {
    if(number === existingNumbers[i]) {
      return false;
    }
  }
  return true;
}

关于javascript - 使用 javascript 需要在整个页面中随机且唯一的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35707278/

相关文章:

javascript - 使用 jquery 选择表中的 TR。

javascript - 使用 Typescript 在 React JS 中禁用文本框

javascript - SVG 未在 Firefox 34.0.5 和 IE 11 中呈现

javascript - browserify 入门 : import local files?

javascript - 原型(prototype)继承: Can you chain Object.创建?

javascript - 从浏览器运行 cmd - 通过 JS

javascript - Safari - 删除 anchor 标记中的文本空间

javascript - x === x 在没有 NaN 的情况下返回 false 是否有任何值(value)?

javascript - 如何使用 javascript 动态更改显示不同的 div

javascript - django:将 url 作为参数传递