Ocultar fechas inválidas en Luxon.
Estoy tratando de formatear un diseño HTML para que no muestre mis elementos de fecha si son inválidos. Tengo una fecha de “Creado” y una fecha de “Actualizado”, por lo que al menos un campo estará vacío con frecuencia.
Estoy tratando de usar la función isValid()
de luxon dentro de un script en mi diseño para incluir selectivamente la fecha o sobrescribirla. El problema es que ahora no se incluyen todas las fechas, sean válidas o no. Más allá de lo básico, soy un novato total en frontend, así que seguro que es algo sencillo.
Esto es lo que tengo actualmente dentro de la cabecera del diseño:
<h1>{{ title }}</h1>
<script type="text/javascript">
if (created.isValid() === true) {
document.write('<p>Created: <time datetime="{{ created | htmlDateString }}">{{ created | readableDate }}</time></p>');
} else {
document.write('');
}
</script>
<script type="text/javascript">
if (updated.isValid() === true) {
document.write('<p>Updated: <time datetime="{{ updated | htmlDateString }}">{{ updated | readableDate }}</time></p>');
} else {
document.write('');
}
</script>
También he intentado abordarlo de esta manera:
<script>
created.isValid() ? document.write('<p>Created: <time datetime="{{ created | htmlDateString }}">{{ created | readableDate }}</time></p>') : '';
</script>
<script>
updated.isValid() ? document.write('<p>Updated: <time datetime="{{ updated | htmlDateString }}">{{ updated | readableDate }}</time></p>') : '';
</script>
Estoy bastante seguro de que esto se debe a que aún no comprendo completamente la semántica de JavaScript y los documentos HTML, pero todavía estoy en la etapa en la que no sé lo que no sé.
¡Cualquier ayuda sería muy apreciada!
davy.ai
El problema con ambos fragmentos de código es que
document.write()
no es un enfoque óptimo para agregar o eliminar elementos HTML basados en una condición.En su lugar, puedes crear un nuevo elemento
div
que se utilizará para agregar tus elementos de fecha si son válidos, y agregar este elemento a tu diseño usandodocument.body.appendChild()
.Aquí tienes un ejemplo de cómo podría verse tu código:
Este código crea un nuevo elemento
div
llamadocontenedorFecha
, luego verifica sicreated
yupdated
son válidos usandoisValid()
. Si lo son, crea un elementop
para cada fecha y lo agrega acontenedorFecha
. Finalmente, agregacontenedorFecha
al elemento body de tu diseño usandodocument.body.appendChild()
.Ahora, si ambas fechas no son válidas, no se agregará nada al diseño. Si solo una fecha es válida, solo esa fecha se agregará. Si ambas son válidas, se agregarán ambas fechas.