HTMLify
script.js
Views: 5 | Author: cody
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | const container = document.querySelector('.container'); const seats = document.querySelectorAll('.row .seat:not(.occupied)'); const count = document.getElementById('count'); const total = document.getElementById('total'); const movieSelect = document.getElementById('movie'); populateUI(); let ticketPrice = +movieSelect.value; // Save selected movie index and price function setMovieData(movieIndex, moviePrice) { localStorage.setItem('selectedMovieIndex', movieIndex); localStorage.setItem('selectedMoviePrice', moviePrice); } // Update total and count function updateSelectedCount() { const selectedSeats = document.querySelectorAll('.row .seat.selected'); const seatsIndex = [...selectedSeats].map(seat => [...seats].indexOf(seat)); localStorage.setItem('selectedSeats', JSON.stringify(seatsIndex)); const selectedSeatsCount = selectedSeats.length; count.innerText = selectedSeatsCount; total.innerText = selectedSeatsCount * ticketPrice; setMovieData(movieSelect.selectedIndex, movieSelect.value); } // Get data from localstorage and populate UI function populateUI() { const selectedSeats = JSON.parse(localStorage.getItem('selectedSeats')); if (selectedSeats !== null && selectedSeats.length > 0) { seats.forEach((seat, index) => { if (selectedSeats.indexOf(index) > -1) { seat.classList.add('selected'); } }); } const selectedMovieIndex = localStorage.getItem('selectedMovieIndex'); if (selectedMovieIndex !== null) { movieSelect.selectedIndex = selectedMovieIndex; } } // Movie select event movieSelect.addEventListener('change', e => { ticketPrice = +e.target.value; setMovieData(e.target.selectedIndex, e.target.value); updateSelectedCount(); }); // Seat click event container.addEventListener('click', e => { if ( e.target.classList.contains('seat') && !e.target.classList.contains('occupied') ) { e.target.classList.toggle('selected'); updateSelectedCount(); } }); // Initial count and total set updateSelectedCount(); |