Reputation: 25
the following script hides the header on my website when executed through button click.
<script>
function openTab(evt, drinkId) {
tabcontent = document.getElementsByClassName("tabcontent");
var i, tabcontent, tablinks;
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
document.getElementById("sticky-header").style.display = "block";
}
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
document.getElementById(drinkId).style.display = "block";
document.getElementById("sticky-header").style.display = "none";
evt.currentTarget.className += " active";
}
</script>
I want to hide the header only for screens above 768px and show it for devices below. I am new to JS and so I modified it to this:
<script>
function tabMedia(x) {
if (x.matches) { // If media query matches
function openTab(evt, drinkId) {
tabcontent = document.getElementsByClassName("tabcontent");
var i, tabcontent, tablinks;
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
document.getElementById("sticky-header").style.display = "block";
}
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
document.getElementById(drinkId).style.display = "block";
document.getElementById("sticky-header").style.display = "none";
evt.currentTarget.className += " active";
}
} else {
function openTab(evt, drinkId) {
tabcontent = document.getElementsByClassName("tabcontent");
var i, tabcontent, tablinks;
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
document.getElementById("sticky-header").style.display = "block";
}
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
document.getElementById(drinkId).style.display = "block";
evt.currentTarget.className += " active";
}
}
}
var x = window.matchMedia("(min-width: 768px)")
tabMedia(x)
x.addListener(tabMedia)
</script>
Please let me know how I can achieve it. Thanks!
Upvotes: 0
Views: 41
Reputation: 1903
<script>
function openTab(evt, drinkId) {
tabcontent = document.getElementsByClassName("tabcontent");
var i, tabcontent, tablinks;
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
}
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
document.getElementById(drinkId).style.display = "block";
// hide #sticky-header on screens bigger than 768 pixels
if (window.innerWidth > 768) {
document.getElementById("sticky-header").style.display = "none";
} else {
document.getElementById("sticky-header").style.display = "block";
}
evt.currentTarget.className += " active";
}
</script>
Upvotes: 1