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
JS: el elemento dinámico (botón) cambia el valor del atributo que se le asigna después de crear un nuevo elemento dinámico. ¿Por qué?

Tengo un botón 'Guardar'.

Al hacer clic en el botón 'Guardar', creo un botón dinámico en JS.

El nombre del botón dinámico está formateado por el valor de una variable.

Establecí el atributo ID del nuevo botón dinámico para que sea igual al valor de la variable anterior.

Cuando hago clic en el nuevo botón dinámico, funciona. Imprime el valor de la variable adjunta.

Problema : cuando creo un segundo botón dinámico, ese botón también funciona. Pero el botón anterior ya no funciona, por alguna razón imprime el nuevo valor de la variable.

 function saveNewProject(){ userProject++; titleInputValue = document.getElementById("rightBottomContainerContentContainerContent1ElementId").value; newElement = document.createElement("button"); newElement.setAttribute("type", "button"); newElement.setAttribute("id", userProject); console.log(newElement); newElement.innerText = `${userProject} - ${titleInputValue}`; console.log(newElement); oldElement = document.getElementById("leftBottomContainerContentContainerContentElementId"); oldElement.appendChild(newElement); newElementLine = document.createElement("br"); oldElement.appendChild(newElementLine); console.log(newElement); newElement.addEventListener("click", function(){ asd = newElement.getAttribute("id"); console.log(asd); console.log(newElement); }); }

Soy nuevo en el desarrollo de sitios web, este es mi tercer día. De forma anticipada, muchas gracias por su ayuda.

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

0

Use "esto" dentro de su controlador de eventos

Hay un error común de principiante en su código. newElement se actualiza cada vez que agrega un nuevo botón. Y todos los controladores de eventos de botón usan el valor más reciente y muestran el "id" del último botón agregado.

Para que funcione, deberá cambiar la línea de código que se muestra a continuación. En lugar de newElement, usa "this". Y dentro de un controlador de eventos, "esto" significa el elemento al que se adjunta el evento. Entonces this.id devuelve la ID de sí mismo en lugar del último botón agregado.

Pruebe el fragmento de código para ver cómo funciona.

 // asd = newElement.getAttribute("id"); // <-- incorrect asd = this.getAttribute("id"); // <-- correct 

 let userProject = 0; function saveNewProject(){ userProject++; titleInputValue = document.getElementById("rightBottomContainerContentContainerContent1ElementId").value; newElement = document.createElement("button"); newElement.setAttribute("type", "button"); newElement.setAttribute("id", userProject); console.log(newElement); newElement.innerText = `${userProject} - ${titleInputValue}`; //console.log(newElement); oldElement = document.getElementById("leftBottomContainerContentContainerContentElementId"); oldElement.appendChild(newElement); newElementLine = document.createElement("br"); oldElement.appendChild(newElementLine); //console.log(newElement); newElement.addEventListener("click", function(){ // asd = newElement.getAttribute("id"); // <-- incorrect asd = this.getAttribute("id"); // <-- correct console.log("You clicked button " + asd); //console.log(newElement); }); }
 <div id="leftBottomContainerContentContainerContentElementId" value="left"> <input id="rightBottomContainerContentContainerContent1ElementId" value="title" /> <button onclick="saveNewProject()">Save</button> <br/> </div>

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