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

151
Visualizações
¿Existe una función de Javascript para restringir una línea en una función para ejecutar una sola vez?

Problema: tengo una página que tiene varios botones para guardar y aparecerá un mensaje de alerta si se presiona el botón. Tengo un botón guardar todo que usa nodeList para guardar todos los datos en función de si la casilla de verificación está marcada, lo que significa que si hay 10 casillas de verificación marcada, entonces la función saveall() ejecutará la función save() 10 veces y aparecerán 10 mensajes de alerta.

Lo que esperaba: Quiero ejecutar la función saveAll() y el mensaje de alerta solo debería aparecer una vez, así que espero que una función restrinja la alerta en la función save() para que se ejecute una sola vez, aunque se ejecutará 10 veces continuamente. Se agradece cualquier otra forma de obtener el resultado esperado.

Código de ejemplo:

 <table class="table" border="1"> <thead> <tr> <th>Input</th> <th><input id="1"></th> <th><input type="checkbox" class="box"></th> <th><button type="submit" onclick="save()">save</button></th> </tr> <tr> <th>Input</th> <th><input id="2"></th> <th><input type="checkbox" class="box"></th> <th><button onclick="save()">save</button></th> </tr> <tr> <th>Input</th> <th><input id="3"></th> <th><input type="checkbox" class="box"></th> <th><button onclick="save()">save</button></th> </tr> <button onclick="saveall()">save all</button> </thead> </table> function save(){ //save something into database alert("success"); } function saveall() { let nodeList = document.querySelectorAll('.box:checked'); nodeList.forEach(node => node.parentNode.parentNode.querySelectorAll('button')[0].click()); }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

esto está sucediendo debido al burbujeo de eventos, por lo tanto, dejó de usar event.stopPropagation.

explicado con un ejemplo en https://stackoverflow.com/questions/4616694/what-is-event-bubbling-and-capturing#:~:text=Event%20bubbling%20and%20capturing%20are,the%20elements%20receive%20the %20evento .

about 4 years ago · Juan Pablo Isaza Relatório

0

function saveall(event) { let nodeList = document.querySelectorAll('.box:checked'); nodeList.forEach(node => node.parentNode.parentNode.querySelectorAll('button')[0].click()); event.stopPropagation(); }
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