0

大家好,我对编程很陌生,这是我在 stackoverflow 上的第一篇文章,我正在开发一个涉及从数组中抽取随机卡片的小游戏。

像这样画一个数组:

var cards = [document.getElementById("c1"),
         document.getElementById("2"),
         document.getElementById("3"),
         document.getElementById("4"),
        ];

现在我有以下代码可以从数组中生成随机变量:

var randomNum = Math.floor((Math.random() * cards.length));

我用:

document.getElementById(randomNum);

选择随机变量。

现在我想选择数组中的所有其他变量并为它们提供以下代码,这样屏幕上一次只会显示一张卡片:

.style.display: "none";

这甚至可能吗?非常感谢!

4

3 回答 3

0

您可以通过为所有卡片元素分配一个公共类来做到这一点,然后根据它是否匹配将display样式设置为空或无:

document.getElementById('btn_rnd').addEventListener('click', function () {
    // get array of elements that have the "card" class:
    var cards = document.querySelectorAll('.card');
    // pick a random number:
    var randomNum = Math.floor((Math.random() * cards.length));
    // show only that card:
    for (var i = 0; i < cards.length; i++) {
        cards[i].style.display = (i == randomNum ? '' : 'none');
    }
});
<div id="c1" class="card">card 1</div>
<div id="c2" class="card">card 2</div>
<div id="c3" class="card">card 3</div>
<div id="c4" class="card">card 4</div>
<button id="btn_rnd">pick one randomly</button>

按下按钮后,上面会随机选择。

如果您定义了一个像此按钮单击这样的事件处理程序,请确保将该 javascript 放在文档末尾附近,以确保它找到按钮(或您将事件处理程序绑定到的任何元素)。

于 2015-12-26T20:50:20.870 回答
0

HTML:

<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>

<button id="play">Play !</button>

CSS:

.card {
  height: 50px;
  width: 50px;
  background-color: red;
  margin: 5px;
}

div {
  display: none;
}

使用纯 Javascript:

(function() {

  var cards = document.getElementsByClassName('card');

  var play = document.getElementById('play');

  play.addEventListener('click', function() {
    cards[Math.round(Math.random() * 3)].style.display = 'block';
  });

})();

使用 jQuery :

$(document).ready(function() {
    $('#play').click(function() {
    var card = $('.card').get(Math.round(Math.random() * 3));
    $(card).show();
  });
});

JSFiddle

于 2015-12-26T20:58:54.073 回答
0
  • 选择所有卡片:
    document.querySelectorAll('#holder .card')

  • 选择一张随机卡:
    document.querySelector('#holder .card:nth-child(' + (1 + randomNum) + ')')

  • 选择除单个随机之外的所有卡:
    document.querySelectorAll('#holder .card:not(:nth-child(' + (1 + randomNum) + '))')

要应用样式,只需遍历第三个选择器的结果:
for (var a = cards.length - 1; a >= 0; a--) cards[a].style.display = 'none';

于 2015-12-26T21:00:43.050 回答