Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

173
Vistas
How to call a class method from the button in js?

How to call a class method from the button? When the code is like below I get an error:

Uncaught TypeError: Account.add is not a function
    at HTMLButtonElement.onclick 

class Account {
  #count;
  constructor(name, count) {
    this.name = name;
    this.#count = count;
  }  
  add() {
    return this.#count + 1;
  }
}
<h1>Something about ...</h1>
<div>
    <h1 id='sth'>            
        Something
    </h1>
</div>
<button type="button" onclick="Account.add()">Click me</button>

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

There are two ways of doing that. One is the static method and the second is initializing your class. Since you have a constructor setting some vars which are being used in add(), you need to initialize the class before calling its methods.

class Account {
  #count;
  constructor(name, count) {
    this.name = name;
    this.#count = count;
  }  
  add() {
    return this.#count + 1;
  }
}

const account = new Account(); // <----- Initialize class
<h1>Something about ...</h1>
<div>
    <h1 id='sth'>            
        Something
    </h1>
</div>
<button type="button" onclick="account.add()">Click me</button>

about 4 years ago · Juan Pablo Isaza Denunciar

0

You can use it if it is an static method, like this:

class Account {
  #count;
  constructor(name, count) {
    this.name = name;
    this.#count = count;
  }  
  static add() {
    return this.#count + 1;
  }
}
// but now you will get different error since static methods have different `this`

if it is not static method you need to initialize object on whom that method will be called. For example:

class Account {
  #count;
  constructor(name, count) {
    this.name = name;
    this.#count = count;
  }  
  add() {
    return this.#count + 1;
  }
}

const newAcc = new Account("name", 0);

And then from your template you can do:

<body>
  <h1>Something about ...</h1>
  <div>
      <h1 id='sth'>            
          Something
      </h1>
  </div>
  <button type="button" onclick="acc.add()">Click me</button>
</body>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda