querySelector returns the first result. You can only have one item with an id. You can not update an collection, you have to loop over each one.
document.querySelector("#toggle").addEventListener("click", function() {
document.querySelectorAll(".price-yearly, .price-monthly")
.forEach(function(elem) {
elem.classList.toggle('hidden')
})
})
.hidden { display: none; }
<div class="plans">
<div class="price-monthly">Monthly 1</div>
<div class="price-yearly hidden">Yearly 1</div>
<div class="price-monthly">Monthly 2</div>
<div class="price-yearly hidden">Yearly 2</div>
<div class="price-monthly">Monthly 3</div>
<div class="price-yearly hidden">Yearly 3</div>
<div class="price-monthly">Monthly 4</div>
<div class="price-yearly hidden">Yearly 4</div>
<div class="price-monthly">Monthly 5</div>
<div class="price-yearly hidden">Yearly 5</div>
</div>
<button id="toggle" type="button">toggle</button>
But there is a 100% better way of doing it, add a class to a parent element.
document.querySelector("#toggle").addEventListener("click", function () {
document.querySelector(".plans").classList.toggle('yearly')
})
.plans .price-yearly {
display: none;
}
.plans.yearly .price-yearly {
display: block;
}
.plans.yearly .price-monthly {
display: none;
}
<div class="plans">
<div class="price-monthly">Monthly 1</div>
<div class="price-yearly">Yearly 1</div>
<div class="price-monthly">Monthly 2</div>
<div class="price-yearly">Yearly 2</div>
<div class="price-monthly">Monthly 3</div>
<div class="price-yearly">Yearly 3</div>
<div class="price-monthly">Monthly 4</div>
<div class="price-yearly">Yearly 4</div>
<div class="price-monthly">Monthly 5</div>
<div class="price-yearly">Yearly 5</div>
</div>
<button id="toggle" type="button">toggle</button>