Estoy creando una página HTML que toma una fecha de un tipo de entrada = "fecha" y devuelve el signo del zodiaco para esa fecha. He usado una función JS para dividir la fecha en una matriz y usar los índices para aislar el mes y el día. El programa se ejecuta como se esperaba y muestra el signo zodiacal correcto. Pero, si envío la fecha y luego la cambio, mantiene la selección original, a menos que actualice la página.
¿Hay alguna manera de cambiar la entrada sin actualizar la página? O una vez enviado, ¿es estático?
Selecciono una fecha que muestra el signo zodiacal, por ejemplo, 'Tauro', luego, sin actualizar la página, selecciono una fecha que representa 'Aries', pero la pantalla sigue siendo 'Tauro'. ¿Debo actualizar la página si quiero seleccionar y volver a enviar una fecha diferente o hay alguna forma de hacerlo sin actualizar la página?
let userDate = document.querySelector('.selectedDate').value; document.querySelector('.enterDate').addEventListener('click', findZodiac); function findZodiac() { let sign = ""; let selectedDate = new Date(userDate); let month = (selectedDate.getUTCMonth()) + 1; let day = (selectedDate.getUTCDate()); let zodiacDisplay = document.querySelector('.starDisplay'); if (month == 3 && day > 20 || month == 4 && day < 20) { sign = "Aries"; } else if (month == 5 && day < 21 || month == 4 && day > 19) { sign = "Taurus"; } zodiacDisplay.innerText = sign; }El problema es que está almacenando en caché el valor inicial del formulario:
let userDate = document.querySelector('.selectedDate').value;Luego, cada vez que se llama a findZodiac(), todavía se refiere a la copia obsoleta de userDate. No hay razón por la que no pueda consultar y administrar ese valor localmente dentro de la función findZodiac.