Tengo un ciclo foreach que recorre una matriz, luego ejecuto una función de devolución de llamada con el valor de cada elemento de la matriz como parámetro de la función, que se ejecuta una vez por cada elemento de la matriz. En la función de devolución de llamada, estoy tratando de comparar el valor que se pasa con una cadena, pero siempre obtengo un falso, nada se registra en la consola
este es mi codigo
window.addEventListener('load', function() { let occupation = ["urologist", "urologist", "staff", "nurse", "surgeon"] occupation.forEach(function(occ) { let ab = occ.textContent let bc = ab.toLowerCase(); chkfun(bc) }) function chkfun(val) { if (val == "urologist") { console.log("urologist") } if (val == "surgeon") { console.log("surgeon") } if (val == "staff") { console.log("staff") } if (val == "nurse") { console.log("nurse") } } }, false);
Su problema es con la línea let ab = occ.textContent
. occ
ya contiene el contenido del texto. Puedes simplemente hacer bc = occ.toLowerCase()
También eche un vistazo a JavaScript Switch en lugar de hacer un montón de if
Puede llamar a su función dentro de forEach y se llamará con cada elemento, allí puede transformar su valor a minúsculas y comparar, también use otro si así el script no probará cada valor y se detendrá tan pronto como obtenga una coincidencia . También puede agregar un else
al final para elementos desconocidos
window.addEventListener('load', function() { let occupation = ["Urologist", "urologist", "staff", "nurse", "surgeon","a"]; occupation.forEach(chkfun); function chkfun(v) { let val = v.toLowerCase(); if (val == "urologist") { console.log("urologist") } else if (val == "surgeon") { console.log("surgeon") } else if (val == "staff") { console.log("staff") } else if (val == "nurse") { console.log("nurse") } else { console.log("element not found"); } } }, false);