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

192
Visualizações
JavaScript obtiene elementos por clase en la iteración de envío

Estoy tratando de iterar sobre formularios para me gusta con matraz y AJAX. Funciona si solo hay un formulario y uso obtener elemento por id. ¿Qué estoy haciendo mal en JS al iterar sobre la clase?

HTML:

 <form class="like_form" method="POST"> <input type="hidden" name="user_id" value="{{session['logged_in']['id']}}"> <input type="hidden" name="like_id" value="32"> <input type="submit" class="small_submit" value="🤍"> </form> <form class="like_form" method="POST"> <input type="hidden" name="user_id" value="{{session['logged_in']['id']}}"> <input type="hidden" name="like_id" value="32"> <input type="submit" class="small_submit" value="🤍"> </form>
 var like_form = document.getElementsByClassName('like_form'); for(var i = 0; i < like_form.length; i++){ like_form[i].onsubmit = function(e){ e.preventDefault(); console.log("clicked form") var form = new FormData(like_form) fetch("http://localhost:5000/test/form", { method :'POST', body : form}) .then( response => response.json() ) .then( data => { console.log(data) console.log(data['stars']) const stars = document.getElementById("stars") stars.innerHTML = `💜 ${data['stars']}` }) } }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Debe obtener los datos del formulario de un formulario, no la colección de formularios. Para que funcione, sugeriría usar un bucle for..of , con let para obtener el alcance del bloque:

 for (let lform of like_form) { lform.onsubmit = function(e) { e.preventDefault(); console.log("clicked form"); var form = new FormData(lform); // <---

Un segundo problema es document.getElementById("stars") . Ese elemento no existe en su HTML. Además, si se supone que este es un elemento relacionado con el formulario (uno para cada formulario), tenga en cuenta que los atributos de id deben ser únicos en HTML, por lo que debe seleccionar dichos elementos de manera diferente.

about 4 years ago · Juan Pablo Isaza Relatório

0

Terminé teniendo que iterar con el índice :( ¡Funcionó muy bien para cambiar el Me gusta en la página también! Solo usé el índice tanto para enviar como para cambiar el número en la página. Ver like_count[i].value

 let like_form = document.getElementsByClassName('like_form'); let like_count = document.getElementsByClassName('like_count'); for(let i = 0; i < like_form.length; i++){ like_form[i].onsubmit = function(e){ e.preventDefault(); console.log("clicked form") var form = new FormData(like_form[i]) fetch("http://localhost:5000/test/form", { method :'POST', body : form}) .then( response => response.json() ) .then( data => { if (data['stars']){ console.log(data) console.log(data['stars']) const stars = document.getElementById("stars") stars.innerHTML = `💜 ${data['stars']}` like_count[i].value = `💜 ${data['num']}` } }) } }
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