Tengo una tabla con estas columnas en la página HTML. Razor se utiliza para la salida. Los valores se generan dinámicamente desde la base de datos.
| IDENTIFICACIÓN | Nombre | Semana 1 | Semana 2 | ... | Semana_52 |
|---|---|---|---|---|---|
| 1 | Prueba1 | 3 | 1 | ||
| 2 | Prueba2 | 2 | 3 | 3 | |
| 3 | Prueba3 | 5 | 1 |
Y, por ejemplo, quiero ocultar la columna Week_52 porque la columna no tiene valores en todas las filas. La columna (table -> thead -> tr -> th) no tiene hijos, por lo que no entiendo cómo se pueden asociar con valores en (table -> tbody -> tr -> td).
¿Cómo puedo hacer esto en vainilla javascript? ¿O tal vez hay otra solución?
Editado. 0 -> vacío
Resolví el problema. Agregué id="myAnchor" a la tabla con el atributo data-currentweek. (Obtengo el valor de la semana actual de la base de datos usando Razor)
function hideWeekColumns(){ const myAnchor = document.getElementById("myAnchor"); currentweek = myAnchor.dataset.currentweek-1; let weeks = document.getElementsByClassName('column week'); let weeks_array = Array.from( weeks ); weeks_array.splice(0, currentweek); // from position 0, remove 1 element weeks_array.forEach(element => { element.style.display = 'none'; }); }; hideWeekColumns();Al usar jquery puedes lograr esto
El primer paso incluye un archivo jquery y luego
en la parte inferior agregar
<script> let hide = {} for(let i = 1; i <= 52; i++){ hide[i] = true } $('table tbody tr').each(function(){ let cn = -1 $(this).find('td').each(function(){ if($.trim($(this).text()) != '0' && hide[cn]){ hide[cn] = false } cn++ }) }) console.log(hide) for (var key of Object.keys(hide)) { if(hide[key]){ $('table tr td:nth-child('+key+')').hide() } } </script>