简体   繁体   中英

create a button that shows or hides a div depending on whether it is currently showing

I'm fairly new in with JS and was wondering, if there is a more cleaner way of writing this code?

I'm trying to create a button that shows or hides a div depending on whether it is currently showing.

Many Thanks in Advance

Anne

var button = document.getElementById('button');
var hideText = document.getElementById('output').className = 'hide';

button.addEventListener('click', ()=>{
    if(hideText){
        document.getElementById('output').className = 'unhide';
        hideText = false;
    }else{
        document.getElementById('output').className = 'hide';
        hideText = true;
    }
})

CSS

.hide{display: none;}

.unhide{display: block;}

You can just toggle the classes

button.addEventListener('click', () => {
    document.getElementById('output').classList.toggle('hide');
}

Just use a single class (eg unhide ) and make it invisible by default. Then do

button.addEventListener('click', () => {
    document.getElementById('output').classList.toggle('unhide');
}

You can remove the extra variable hideText and also the extra css if you implement like this

var x = document.getElementById("output");
if (x.style.display === "none") {
    x.style.display = "block";
} else {
    x.style.display = "none";
}

In jquery the are other simpler possible way like toggle , hide , show .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM