I have multiple radio buttons with same name attribute for my real estate website(e.g. 1room 2rooms 3rooms) for filtering purposes.
The thing I realize is that my code is very anti-DRY and it seems very repetitive.
I tried :
if (document.getElementById('rooms-all').checked) {
filters.rooms = 999999999;
} else if (document.getElementById('room-1').checked) {
filters.rooms = 1;
} else if (document.getElementById('room-2').checked) {
filters.rooms = 2;
} else if (document.getElementById('room-3').checked) {
filters.rooms = 3;
} else if (document.getElementById('room-4').checked) {
filters.rooms = 4;
} else if (document.getElementById('room-5').checked) {
filters.rooms = 5;
}
This works just great, but I wanted to do something like :
let x = document.getElementsByName('rooms').checked; // also tried .value
console.log(x)
but for some reason it returns undefined
My HTML looks like
<input type="radio" id="rooms-all" class='radio' name="rooms" value="999999999" checked>
<label for="rooms-all">All</label>
<input type="radio" id="room-1" class='radio' name="rooms" value="1">
<label for="room-1">1 Room</label>
<input type="radio" id="room-2" class='radio' name="rooms" value="2">
<label for="room-2">2 Rooms</label>
<input type="radio" id="room-3" class='radio' name="rooms" value="3">
<label for="room-3">3 Rooms</label>
<input type="radio" id="room-4" class='radio' name="rooms" value="4">
<label for="room-4">4 Rooms</label>
<input type="radio" id="room-5" class='radio' name="rooms" value="5">
<label for="room-5">5 Rooms</label>
And what I see currently that I don't use the values I gave them at all.
What is the better way of doing it?