大家好我是编程新手,这是我在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";
这甚至可能吗?非常感谢!
答案 0 :(得分:0)
您可以通过为所有卡片元素指定一个公共类,然后将display
样式设置为空或 none 取决于它是否匹配来做到最好:
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');
}
});
&#13;
<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>
&#13;
按下按钮后上面的随机选择。
如果你定义一个像这个按钮点击的事件处理程序,请确保将该javascript放在文档末尾附近,以确保它找到按钮(或绑定事件处理程序的任何元素)。
答案 1 :(得分: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();
});
});
答案 2 :(得分: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';