如何使JavaScript Math.random重复?

如何使JavaScript Math.random重复?,javascript,css,math,variables,addclass,Javascript,Css,Math,Variables,Addclass,基本上,我在我的网站上有一个页面,页面上的方框可以通过幻灯片显示背景色。我希望这个背景颜色是随机加载的页面,通过添加一个类的元素,如蓝色,绿色等 我已经创建了这段代码,正如您可能注意到的那样,这会对颜色类进行随机排序并应用于元素,这适用于前6个元素,但是本页特别有12个元素我希望应用这段代码,所以我的问题是如何将随机选择的变量类应用于所有“.portfolio ul li a”?它需要某种形式的重复吗 这是我的剧本 function randCol() { return (Math.round(

基本上,我在我的网站上有一个页面,页面上的方框可以通过幻灯片显示背景色。我希望这个背景颜色是随机加载的页面,通过添加一个类的元素,如蓝色,绿色等

我已经创建了这段代码,正如您可能注意到的那样,这会对颜色类进行随机排序并应用于元素,这适用于前6个元素,但是本页特别有12个元素我希望应用这段代码,所以我的问题是如何将随机选择的变量类应用于所有“.portfolio ul li a”?它需要某种形式的重复吗

这是我的剧本

function randCol() {
return (Math.round(Math.random())*7); }

$(document).ready(function() {
var classes = [ 'blue', 'orange', 'green', 'pink', 'black', 'white'];
classes.sort( randCol );
$('.portfolio ul li a').each(function(i, val) {
    $(this).addClass(classes[i]);
});
})

这是我的源代码结构

<div class="portfolio">
<ul>
    <li>
       <a href="#">
         <img src="images/content/portfolio/sample1.png" height="175" width="294" alt="sample" class="front" />
         Text for behind the image                         
       </a>
    </li>


您的randCol()比较函数实际上不起作用。首先,根据比较的第一项是否大于、小于或等于(分别)第二项,此类函数应返回1、-1或0

其次,这里的代码显然是为了引用6元素数组,但在编写时,它可以返回高达7的值,比数组的最后一个索引高2。最好在each()函数文本中执行随机操作,如下所示:

$(document).ready(function() {
var classes = [ 'blue', 'orange', 'green', 'pink', 'black', 'white'];

$('.portfolio ul li a').each(function(i, val) {
    var index = Math.floor(Math.random()*6); // highest value will be 5, lowest will be 0
    $(this).addClass(classes[index]);
});
您的randCol()比较函数实际上不起作用。首先,根据比较的第一项是否大于、小于或等于(分别)第二项,此类函数应返回1、-1或0

其次,这里的代码显然是为了引用6元素数组,但在编写时,它可以返回高达7的值,比数组的最后一个索引高2。最好在each()函数文本中执行随机操作,如下所示:

$(document).ready(function() {
var classes = [ 'blue', 'orange', 'green', 'pink', 'black', 'white'];

$('.portfolio ul li a').each(function(i, val) {
    var index = Math.floor(Math.random()*6); // highest value will be 5, lowest will be 0
    $(this).addClass(classes[index]);
});

上面的答案可能会导致重复克隆,我认为这可以解决它:)


上面的答案可能会导致重复克隆,我认为这可以解决它:)


可能使用
var index=Math.floor(Math.random()*classes.length)
然后您可以向数组中添加任意数量的颜色,而无需记住更改因子。这太完美了,非常感谢您的解释,而且我对JScript非常陌生。@Dave Anderson,添加得不错如果我需要添加新颜色,这是个好主意。Thanks@Dave安德森:当然。这只是一个技术的说明,而不是一个成品然后您可以向数组中添加任意数量的颜色,而无需记住更改因子。这太完美了,非常感谢您的解释,而且我对JScript非常陌生。@Dave Anderson,添加得不错如果我需要添加新颜色,这是个好主意。Thanks@Dave安德森:当然。这只是一种技术的说明,而不是成品。