Estoy haciendo algunas conversiones de jQuery a Vanilla JS en mi sitio web. En jQuery puedo hacer esto:
$("#nav-menu>ul>li.active").removeClass("active");que, todo en una línea, eliminará la clase 'activa' de cualquier elemento <li> que la tenga (solo habría uno). Si ningún elemento <li> tiene esa clase, no hay errores y mi secuencia de comandos continúa ejecutándose.
Sin embargo, en Vanilla JS, si hago esto:
document.querySelector('#nav-menu>ul>li.active').classList.remove('active');y actualmente no hay elementos <li> con la clase 'actove', aparece el siguiente error y mi secuencia de comandos deja de ejecutarse:
Uncaught TypeError: Cannot read prperties of null (reading 'classlist')Puedo solucionar esto así:
var active = document.querySelector('#nav-menu>ul>li.active'); if(active) { active.classList.remove('active'); }Pero me pregunto si hay una forma mejor y más corta de hacer esto (es decir, seleccione un elemento si existe, luego haga algo con él). ¿Hay una forma abreviada o una forma de hacerlo en menos líneas, etc.?
Gracias por adelantado.
Puede usar el encadenamiento opcional para este propósito, que puede acceder a las propiedades o entrar en una llamada de función encadenada solo si la expresión de la izquierda no está indefinida ni es nula.
document.querySelector('#nav-menu>ul>li.active')?.classList.remove('active');