Entonces tengo una pregunta. Tengo un elemento select option :
<select id="item-types__profile" name="item_type_id"> <option selected disabled style="display:none;" value="0"></option> </select>Y en la carga de la página, estoy tratando de tomar el valor seleccionado:
const typesSelect = document.getElementById('item-types__profile') const test = typesSelect.options[typesSelect.selectedIndex].value; console.log(test); if (test === 0) { console.log('reached'); document.querySelector('.item-fields').style.display = 'none'; } Para consola, muestra 0 , pero no alcanza el código y no imprime console.log('reached') . No entiendo lo que podría estar mal aquí?
Su condición prueba el cero como un número o en Javascript, que se conoce como un entero, pero la prueba variable es una cadena. Debiera ser:
si (prueba === "0")
La triple igualdad === es una comparación estricta, lo que significa que también compara el tipo. El valor de la opción de selección siempre es una cadena, aquí es "0" no 0 . Debe convertirlo en int antes de verificar o usar doble igualdad == .
Use "==" no "==="
const typesSelect = document.getElementById('item-types__profile') const test = typesSelect.options[typesSelect.selectedIndex].value; console.log(test); if (test == 0) { // here console.log('reached'); document.querySelector('.item-fields').style.display = 'none'; }