如何使用JavaScript获取随机div?

如何使用JavaScript获取随机div?,javascript,html,Javascript,Html,我正在使用JavaScript创建一个网格。我想做的是创建一个随机框,当我点击“播放”按钮时,它会改变颜色,但我似乎无法找到它 我试过使用不同数量的Math.random(),这可能就是我的问题所在 const container=document.getElementById('container'); const gameButton=document.createElement('button'); //这是我要用的按钮。 gameButton.addEventListener('cli

我正在使用JavaScript创建一个网格。我想做的是创建一个随机框,当我点击“播放”按钮时,它会改变颜色,但我似乎无法找到它


我试过使用不同数量的Math.random(),这可能就是我的问题所在

const container=document.getElementById('container');
const gameButton=document.createElement('button');
//这是我要用的按钮。
gameButton.addEventListener('click',函数(事件){
让getRandom=document.getElementsByTagName('div');
});
让userInput=prompt('输入一个介于10-20之间的数字:');
if(isNaN(用户输入)){
警报(“仅限数字”);
location.reload();
}else if(用户输入<10){
警报(“小于10”);
location.reload();
}否则如果(用户输入>20){
警报(“大于20”);
location.reload();
}否则{
gameButton.textContent='Play';
gameButton.style.height='25px';
gameButton.style.width='50px';
gameButton.style.borderRadius='7px';
gameButton.style.marginBottom='15px';
container.appendChild(gameButton);
}
对于(设索引=1;索引

在你的问题和你的代码之间,这有点让人困惑。但是,按照你说的,这里有一种方法可以从元素列表中选择一个随机元素,只要你给它一个类名(可以随意调整):


您可以更改事件侦听器中的代码,如下所示:

gameButton.addEventListener('click', function (event) {
    let divs = document.getElementsByClassName('game-board');
    let random_div = divs[Math.floor(Math.random()*divs.length)];
    random_div.style.backgroundColor = 'red';
});

或者,如果您只需要一个正方形来更改颜色,请使用document.getElementsByClassName('square')。

代码的相关部分。您可以更好地检查元素、样式等。但本质上是:

gameButton.addEventListener('click', function (event) {
    let getRandom = document.getElementsByTagName('div');
    var a = Math.random()
    let b = a.toString().substr(2, 1)
    getRandom[b].style = 'background-color: ' + (parseInt(b) % 2 == 0 ? 'yellow' : 'red')
});
因此,您可以使用Math.Random在点(.)之后获得一些随机数,并使用它从getRandom获得的集合中读取一些索引。 然后您只需设置元素样式或任何您想要的


小提琴:

“我试过使用各种数量的Math.random(),这可能是我的问题所在。”哪里?把它放到js小提琴中。我个人喜欢删除不起作用的代码。这是JSFIDLE:我一直在阅读mozilla关于Math.random()的文档但这并不是真的对我有影响。我明白你的意思。我只是不知道数学是如何计算的。random()函数在没有数字的情况下工作。我可以很容易地返回2个整数之间的一些数字,我只是不知道如何使用html元素。@RandyCasburn Woops!Typo.Fixed.@RandyCasburn显然我今天没有喝足够的咖啡-uo-没关系-这是一个只接受6个Q中一个答案的OP。@RandyCasburn抱歉我没有意识到“礼节”在过去两年内我问过的6个问题中,最后一个是一年多以前的问题。@Qodesmith谢谢。我现在正在剖析这是如何工作的,我会在头脑清醒后用问题进行回复。好的,我想我知道你在做什么了。所以从文档中,
Math.floor
返回给定数字的整数。然后
Math.random()
返回一个范围的整数。因此,您返回的是一个范围为
divs.length
的整数。我这样做正确吗?是的。顺便说一下,Math.random()不带任何参数,返回一个介于0和1之间的十进制数。
gameButton.addEventListener('click', function (event) {
    let getRandom = document.getElementsByTagName('div');
    var a = Math.random()
    let b = a.toString().substr(2, 1)
    getRandom[b].style = 'background-color: ' + (parseInt(b) % 2 == 0 ? 'yellow' : 'red')
});