如何重置功能?

问题描述 投票:0回答:3

我有一个报价应用程序,这是我的代码。问题是当我单击按钮并随机出现三个div元素之一时,因为我将style.display设置为block现在,我再次单击生成器,希望一个div再次随机出现,但是以前的div的显示不再显示!

let quotes = document.getElementsByClassName("quotes");

let btn = document.getElementById("generate");

btn.addEventListener('click',function(){
    let random = Math.floor(Math.random() * 3); 
    quotes[random].style.display = "block";
})
javascript function reset
3个回答
0
投票

您将要做的是每次生成新的随机报价时都将所有报价隐藏起来。我还更新了您的随机函数,以便它使用引号div的数量,以便为您提供更多动态。

let quotes = document.getElementsByClassName("quotes");

let btn = document.getElementById("generate");

btn.addEventListener('click',function(){
    for(var i = 0;i<quotes.length;i++){
      quotes[i].style.display = "none";
    }
    
    let random = Math.floor(Math.random() * quotes.length); 
   
    quotes[random].style.display = "block";
});
.quotes{display:none;}
<div class="quotes">1</div>
<div class="quotes">2</div>
<div class="quotes">3</div>
<button id="generate" type="button">Generate</button>

0
投票
let quotes = document.getElementsByClassName("quotes");
let btn = document.getElementById("generate");

btn.addEventListener('click',function(){
    const previousQuote = document.querySelector('.quotes.show');

    if (previousQuote) previousQuote.classList.remove('show');

    const random = Math.floor(Math.random() * 3);

    quotes[random].classList.add('show');
});

如果使用类而不是内联样式,则可以轻松地添加它,并使用它来查找需要恢复为隐藏状态的那个。


0
投票

嗯,您可以在CSS中定义另一个类,而不是每次都将随机选择的div的显示设置为禁止显示,而是希望切换元素的类。 (以防止出现问题),例如:quotes[random].classList.toggle("yourDesiredStyle");

© www.soinside.com 2019 - 2024. All rights reserved.