2017-10-29 5 views
1

重複せずに複数のdiv要素に複数.randomクラスを追加するが、2つのランダムのdivのルールと同時には、2つのクラス(.LEFT & .RIGHT)にランダムクラスを追加しようと

を表示することはできませんJS:

$(document).ready(function(){ 
var classes = ['random-1','random-2', 'random-3']; //add as many classes as u want 
var randomnumber = Math.floor(Math.random()*classes.length); 

$('.left').addClass(classes[randomnumber]); 
}); 

HTML:

<div class="left"> 
    Left 
</div> 

<div class="right"> 
    Right 
</div> 


.left { 
    background: blue; 
    height: 100vh; 
    width: 50%; 
    float: left; 
    position: relative; 
} 
.right { 
    background: red; 
    height: 100vh; 
    width: 50%; 
    float: right; 
} 

    .random-1 { 
    background: orange; 
    } 
    .random-2 { 
    background: yellow; 
    } 
    .random-3 { 
    background: pink; 
    } 
    .random-4 { 
    background: green; 
    } 
    .random-5 { 
    background: blueviolet; 
    } 

に最適結果は、次の2つのランダムでユニークなクラスになるまで繰り返し処理が選択されていることを、whileループを使用することができます

<div class="left random-1"> 
    Left 
</div> 

<div class="right random-4"> 
    Right 
</div> 

https://codepen.io/anon/pen/OOJaqL

+0

どのようにランダム性を適用していますか? – UncaughtTypeError

+1

そして、これは2つの要素だけ(または複数の左/右要素)に必要ですか?そうであれば、明白で簡単な解決法であり、あなたの研究中にそのような形で見つからなかった場合は、単に配列をシャッフルして最初の2つの値を取り出すことです... – CBroe

+0

@UncaughtTypeErrorコードを確認してください – Pedram

答えて

2

だろう。

function getRandomClass() { 

    let classes = ['random-1','random-2', 'random-3']; 
    let index = Math.floor(Math.random() * classes.length); 

    return classes[index]; 
} 

$(document).ready(function() { 

    let leftClass = null; 
    let rightClass = null; 

    while (leftClass == rightClass) { 
     leftClass = randomClass(); 
     rightClass = randomClass(); 
    } 

    $('.left').addClass(leftClass); 
    $('.right').addClass(rightClass); 
}); 
+0

それは私が探していたものです!ありがとう@カラーム – Rob

0

.random-*クラスは、右側のdivにこのクラスがない場合にのみ、左のdivに追加します。

var rightHasClass = $('.right').hasClass(classes[randomnumber]);  
if(! rightHasClass){ 
    $('.left').addClass(classes[randomnumber]); 
} 

var leftHasClass = $('.left').hasClass(classes[randomnumber]); 
if(! leftHasClass){ 
    $('.right').addClass(classes[randomnumber]); 
} 
関連する問題