0
私は3つの列に9つのdivを入れ子にしました。グリッド(#left
)がクリックされたとき、真ん中の行から2つのdiv、row="1"
はクラス.show
を無作為に適用する必要があります。列がない場合、最下行のdivにはrow="2"
にクラス 'があります。表示されます。添付された画像は、起こりうるランダムな結果を示しています。同じ結果が連続して現れるべきではありません。Jqueryでグリッド内のdivをランダムに選択するときに問題が発生する
私のコードのコードスニペットを添付しましたが、現在、私のインデックス選択は希望どおりに機能していないため、理由を探すのに苦労しています。
var obj = {
bindEvents: function() {
var _this = this;
$('#left').on("click", $.proxy(_this.interaction, _this));
},
interaction: function() {
var selector = this.randomGenerator(0, 3);
console.log('selector = ' + selector());
var $midRow = $('#left').find('div[row=1]');
var $bottomRow = $('#left').find('div[row=2]');
$midRow.removeClass('show');
$bottomRow.removeClass('show');
$midRow.not(':eq(' + selector() + ')').addClass('show');
$bottomRow.eq(selector()).addClass('show');
},
randomGenerator: function(min, max) {
var last;
console.log('last = ' + last);
return function() {
var random;
do {
random = Math.floor(Math.random() * (max - min)) + min;
} while (random === last);
last = random;
return random;
};
},
}
obj.bindEvents();
#left {
display: flex;
}
div[row] {
border: 1px solid black;
width: 20px;
background-color: yellow;
}
.show {
background-color: red !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="left">
<div col="0">
<div row="0">0</div>
<div row="1">1</div>
<div row="2">2</div>
</div>
<div col="1">
<div row="0">0</div>
<div row="1">1</div>
<div row="2">2</div>
</div>
<div col="2">
<div row="0">0</div>
<div row="1">1</div>
<div row="2">2</div>
</div>
</div>
返信する時間を割いていただきありがとうございますが、私は、これは問題に対処するかわかりません。問題は 'randomGenerator'関数のようで、' .show'を追加/削除するdivを選択しました。 – CalAlt
編集しました。期待された結果にこのような弱さは見られませんでした。 –