Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

221
Visualizações
Hacer clic en todos los botones con Javascript en una página cargada dinámicamente

Estoy tratando de escribir un código javascript que haga clic en todos los botones en un hilo de discusión en https://www.teamblind.com/ , para poder ver todos los comentarios sin hacer clic en los botones para expandirlos.

Descubrí que puedo hacer clic en todos los botones haciendo lo siguiente

 var bs = document.getElementsByClassName('btn_more'); bs[0].click();

en la consola, solo tengo que ejecutar repetidamente bs[0].click(); hasta que quede un elemento, pero cuando lo convertí en un ciclo while como el siguiente

 function clickall() { var bs = document.getElementsByClassName('btn_more'); while (bs.length > 1 ) { // 1 because the last button directs to other page, all other buttons expands the contents in the current thread bs[0].click(); } return; }

la pestaña del navegador en realidad dejaba de funcionar cuando ejecuto esta función en la consola web, tuve que usar el administrador de tareas para cerrar un proceso del navegador para detener la ejecución de esta función en la consola.

Una de mis conjeturas es que la página se carga dinámicamente, y tal vez deba esperar a que la página se expanda. ¿Alguien sabe por qué la pestaña puede bloquearse al ejecutar dicha función y cómo se debe solucionar?

EDITAR: al hacer clic en un botón, se reduce el tamaño de bs ingrese la descripción de la imagen aquí

Registrando el tamaño bs

![ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

es posible que el btn en sí no se elimine después del clic, es posible que se haya vuelto invisible. Y aparte de eso, los botones ya se recopilaron antes del ciclo, por lo que si se eliminan, esta podría ser la razón por la que se está causando el error, se está aplicando una función a un nodo que no se puede encontrar. Entonces, en su lugar, use un bucle for...each o elementos de consulta cada vez dentro del bucle while.

about 4 years ago · Juan Pablo Isaza Relatório

0

Así que primero no se necesita el ciclo while. Hagámoslo con if :

 function clickall() { var bs = document.getElementsByClassName('btn_more'); // 1 because the last button directs to other page, // all other buttons expands the contents in the current thread if ( bs.length > 1 ) { bs[0].click(); } }

Así que solo hacemos clic en este botón una vez. Ahora podemos ejecutar ese código regularmente:

 // You can stop the loop with window.clearInterval(intervalHandle); when you want. let intervalHandle = window.setInterval(clickall, 500);

Otras lecturas:

  • documento.getElementsByClassName
  • ventana.setInterval
  • ventana.clearInterval
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda