javascript - 如何通过按钮随机选择一个div?

标签 javascript jquery html button random

我有一个菜单栏以及三个不同的隐藏菜单。当用户单击“随机按钮”时,会选择一个随机菜单并成为默认菜单。

这意味着如果用户单击菜单栏,则应打开默认菜单。

如果用户再次点击“随机按钮”,将选择一个新的随机菜单作为默认菜单。

下面的代码能够选择随机菜单。但是,如果用户单击菜单栏,所有隐藏菜单将同时显示,而不是默认菜单(点击“随机按钮”时随机选择)。

HTML:

<p class="random">Random</p>

<i class="fa fa-menu"></i> (This is the menu bar)

<nav class="menu_cover" style="display: none">Menu one</nav>
<nav class="menu_cover" style="display: none">Menu two</nav>
<nav class="menu_cover" style="display: none">Menu three</nav>

JavaScript:

$('.random').click(function(e) { 
    var random_menu_cover = Math.floor(Math.random() * $('.menu_cover').length);

    $('.menu_cover').hide().eq(random_menu_cover).show().css("display", "none");
});

jQuery 是一个简单的隐藏和显示代码。因此,单击菜单栏将同时“隐藏”和“显示”所有三个菜单。

如何修改此代码,以便菜单栏仅影响随机选择的默认菜单?

我希望这个问题有意义。

谢谢

最佳答案

您可以通过以下方式访问所有菜单:

var menuCovers = document.getElementsByClassName('menu_cover');

然后您可以通过以下方式随机选择其中一个菜单:

var randomNumber = Math.floor(Math.random() * menuCovers.length);

从这里,您可以组合一个函数,该函数选择要随机显示的菜单来显示 - 并且可选地(如下面的示例所示)确保随机选择的菜单不是与上次随机选择的菜单相同。

示例:

var random = document.getElementsByClassName('random')[0];
var menuCovers = document.getElementsByClassName('menu_cover');

function openRandomMenu() {

    for (var i = 0; i < menuCovers.length; i++) {

        if (menuCovers[i].classList.contains('visible')) {
        var skip = i;
        menuCovers[i].classList.remove('visible');
        menuCovers[i].classList.add('invisible');
        }
    }

    var randomNumber = skip;

    while (randomNumber === skip) {
        randomNumber = Math.floor(Math.random() * menuCovers.length);
    }
    
    menuCovers[randomNumber].classList.remove('invisible');
    menuCovers[randomNumber].classList.add('visible');
}

random.addEventListener('click',openRandomMenu,false);
.visible {
display: block;
}

.invisible {
display: none;
}
<p class="random">Random</p>

<i class="fa fa-menu"></i> (This is the menu bar)

<nav class="menu_cover invisible">Menu one</nav>
<nav class="menu_cover invisible">Menu two</nav>
<nav class="menu_cover invisible">Menu three</nav>

关于javascript - 如何通过按钮随机选择一个div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38819245/

相关文章:

javascript - 按计算尺寸订购的试剂组件

javascript - 访问 HTML5 canvas 元素的值

javascript - 使用一张站点地图突出显示当前页面

javascript - 如何获取当前点击链接的父链接?

javascript - 动画时图像叠加弹出

javascript - 对在 HTTP1 和 HTTP2 中发送请求感到困惑

javascript - 为什么我不能在 .on 中调用我的函数?

javascript - CSS 过渡到特定位置

javascript - 将字符串换行超过 2 行 - SVG

html - 如何在屏幕阅读器中隐藏 'show more' 按钮?