tengo esta buena secuencia de comandos que me permite mostrar solo los elementos que tienen fecha en el futuro, pero a partir de esto estoy tratando de hacer un clic que muestre solo las fechas que son fines de semana.
$('#basicform_checkbox_2').click(function(e) { $('.div1').each(function(index, element) { var event_day = $(this).text(); event_day = new Date(event_day); var today = new Date(); event_day.setHours(0,0,0,0) today.setDate(today.getDate()+0); today.setHours(0,0,0,0) if(event_day < today) { $(this).toggleClass('toggle'); } }); }); body {font-family: 'Ubuntu', sans-serif; font-weight: 400; color: white; background: black;} div {margin-left: 3vmax;} .div1 {display: block;} .div1.toggle {display: none;} <script type="text/javascript" src="https://code.jquery.com/jquery-latest.min.js"></script> <br> <div> <input type="checkbox" name="basicform_checkbox_2" id="basicform_checkbox_2"/> <label for="basicform_checkbox_2">Weekends only</label> </div> <br> <div class="div1">2022 06 08</div> <div class="div1">2022 06 09</div> <div class="div1">2022 06 10</div> <div class="div1">2022 06 11</div> <div class="div1">2022 06 12</div> <div class="div1">2022 06 15</div> <div class="div1">2022 06 18</div>Entiendo que tengo que usar algo como
var today = data.getDay(); if (today == 6 || today == 0) {o
var today = new Date(); if(today.getDay() == 6 || today.getDay() == 0) alert('Weekend!');o
var DayOfTheWeek = new Date().getDay(); if(DayOfTheWeek == 6 || DayOfTheWeek == 0){ $('#div1').hide(); }o
var days_to_hide = { 0 : "Sunday", 6 : "Saturday" } var today = new Date().getDay(); if( typeof days_to_hide[ today ] !== "undefined" ){ $('#div1').hide(); }pero parece que no puedo incorporar nada de eso en mi script, ni adaptarlos a uno nuevo para cumplir con los requisitos de la tarea, no por la falta de intentos, sino por una baja comprensión de los conceptos básicos.
¡Gracias por su atención!
Debe verificar si no es futuro o (||) no es un día de fin de semana. Refactoricé tu ejemplo a:
const isNotFutureWeekend = (date) => { const weekends = [0,6] const eventDay = new Date(date) eventDay.setHours(0,0,0,0) const today = new Date(); today.setHours(0,0,0,0) return eventDay < today || !weekends.includes(eventDay.getDay()) } $('#basicform_checkbox_2').click(function(e) { $('.div1').each(function(index, element) { if(isNotFutureWeekend($(this).text())) { $(this).toggleClass('toggle'); } }); });