EDITAR: Las respuestas del Sr. Veron, el Sr. Spungin y el Sr. Shah se ajustan perfectamente a mis necesidades. Mi error es evidente y la advertencia de la consola es perfectamente sensata. Gracias a todos.
Estoy tratando de determinar la existencia de un elemento en el DOM. De acuerdo con lo que han sugerido las publicaciones existentes , he recurrido a usar getElementbyId + querySelector y luego verifico si es nulo/indefinido con un condicional.
let target = document.getElementbyId(a).querySelector(b) if(typeof(target) != 'undefined' && target != null){ ... }Aquí es donde me encuentro con un error. Cuando se ejecuta la primera línea, mi consola arroja el error
Uncaught (in promise) TypeError: document.getElementById(...) is nullporque "objetivo" es nulo, pero tengo la intención de que sea nulo y, por lo tanto, me molesta un poco que la consola actúe en contra de mis intereses por una vez.
Esta es una implementación ofrecida y respaldada por muchos en Stack Overflow y, sin embargo, no puedo encontrar personas que enfrenten la misma obstrucción que yo. Por lo tanto, agradecería cualquier explicación de por qué se necesita tal advertencia o formas de eludirla (una mejor implementación de lo que se ha sugerido ampliamente). Muchas gracias.
verifique si no está definido antes de llamar a querySelector
let target = document.getElementbyId(a) ? document.getElementbyId(a).querySelector(b) : undefinedEstá recibiendo este error:
No capturado (en promesa) TypeError: document.getElementById(...) es nulo
Porque está intentando usar querySelector en el elemento que podría ser null o undefined .
Ir con este enfoque:
let element = document.getElementbyId(a); let target = element && element.querySelector(b); if(typeof(target) != 'undefined' && target != null){ ... }Como señalaron otros, cuando .getElementbyId falla, no está undefined y al intentar llamar a métodos en undefined se genera un error.
Para esto está el operador de encadenamiento opcional ( ?. ).
También puede simplificar su condicional para que sea target != undefined , ya que ambos métodos devolverán undefined y variable != undefined devuelve verdadero para undefined y null .
let target = document.getElementbyId(a)?.querySelector(b); // here ^ if(target != undefined){ ... }