Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

445
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!