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

450
Visualizações
¿Por qué onclick no funciona en Javascript?

Estoy tratando de usar onclick para llamar a una function cuando el usuario hace clic en el botón, que parece no funcionar.

Por ejemplo:

 function click(){ console.log('you click it!') }
 <input type='button' id='submitbutton' value = 'Submit' onclick= 'click(); console.log("you used it in HTML")'>
si elimino la console.log Inicie sesión al hacer onclick , no aparecerá ningún mensaje en la console .

 function click(){ console.log('you click it!') }
 <input type='button' id='submitbutton' value = 'Submit' onclick= "click();">

El botón console el mensaje you used it in HTML que escribo directamente dentro de onclick , pero no ejecutará la función click() que le asigné.

Creo que no es el problema de input[type='button'] ya que podríamos usar onclick en input[type='button'] . por ejemplo

¿Alguien podría explicarme qué hace que el código no funcione? Sé que la solución para esto probablemente sea usar addEventListener , pero ¿por qué no funciona?

El posible duplicado del botón de JavaScript al hacer clic no funciona , pero esta pregunta solo sugiere la solución sin explicar el motivo.

¡Gracias por cualquier respuesta!

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

0

Los controladores en línea tienen una cadena de alcance muy, muy peculiar, y por esa razón (entre otras) no deben usarse, porque su comportamiento puede ser poco intuitivo.

Aquí, click se refiere al prototipo de .click on HTMLElement:

 <input type='button' id='submitbutton' value = 'Submit' onclick= 'console.log(click === HTMLElement.prototype.click)'>

Entonces, su function click y su click() hacen referencia a cosas diferentes. Cuando haces clic:

  • El controlador en línea ejecutará HTMLElement.prototype.click en el botón, lo que dará como resultado que se envíe un segundo evento de forma sincrónica, lo que nuevamente activará el mismo controlador. Sin embargo, no entrará en un bucle infinito, porque .click() tiene un indicador especial para evitar que eso suceda exactamente. Luego, you used it in HTML se registra.
  • Una vez que se haya manejado este segundo evento sintético , you used it in HTML se registrará nuevamente, desde el controlador en línea.

Otra forma de verlo:

  • Clic de botón
    • Controlador en línea invocado debido a un clic
      • El controlador en línea se invocó nuevamente debido a .click() en el controlador en línea
        • El controlador en línea no se vuelve a invocar (porque se levanta el indicador de clic en progreso )
        • Se produce el registro
      • Se produce el registro
  • La pila de llamadas ahora está vacía

Use un nombre diferente para la función o, mejor aún, evite los controladores en línea por completo.

about 4 years ago · Juan Pablo Isaza Relatório

0

Hola El error es este: click() es una función de javascript, cambie el nombre a otro. Más información: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click

 function clicka(){ console.log('you click it!') }
 <input type='button' id='submitbutton' value='Submit' onclick='clicka();console.log("you used it in HTML")'>

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