Tengo: document.querySelectorAll('div.stops') que aparece con texto interno "Directo" dos veces en la página.
Entonces, quiero aplicar una condición de que si el texto "Directo" aparece dos veces, entonces haga algo. Tengo un código como el siguiente, pero no me da la longitud de la cantidad de veces que aparece la palabra "Directo". En cambio, solo me da la cantidad de caracteres, que es 6.
for(let i=0; i < document.querySelectorAll('div.stops').length; i++){ if (document.querySelectorAll('div.stops')[i].innerText == 'Direct'){ // Do something }}Imagen donde aparece 2 veces el texto "Directo"
Captura de pantalla de la consola donde traté de encontrar la longitud.
Guarda en caché tus elementos. Utilice Array.from para crear una matriz a partir de la lista de nodos "tipo matriz" que devuelve querySelectorAll . De esa manera, tiene acceso a métodos de matriz como filter .
filter los elementos que tienen 'Directo' como su contenido de texto. Nota: el filter devuelve una nueva matriz.
Si la longitud de esa matriz es 2, haga lo mismo.
const stops = document.querySelectorAll('.stops'); const direct = Array.from(stops).filter(stop => { return stop.textContent === 'Direct'; }); if (direct.length === 2) { console.log('Good'); } <div class="stops">Direct</div> <div class="stops">Karen</div> <div class="stops">Indirect</div> <div class="stops">Bus</div> <div class="stops">Banana</div> <div class="stops">Direct</div>