单击时显示类属性值

Showing class property value on click

提问人:IGCagn 提问时间:4/29/2022 最后编辑:IGCagn 更新时间:4/29/2022 访问量:74

问:

单击按钮元素时,我需要在控制台中显示。this.name

我可以替换内部并设置,但我希望这种方法适用于任何对象。clicked()console.log(myBtn.name)

有没有办法做到?当我单击时,我得到一个空字符串。

谢谢!

class Button {
  constructor(name, id) {
    this.name = name;
    this.ref = document.getElementById(id);


    this.init();
  }

  init() {
    this.ref.addEventListener("click", this.clicked);
  }

  clicked() {
    console.log(this.name);
  }
}

let myBtn = new Button('My button', "test");
<button id="test">Click me</button>

javascript html javascript 对象 这个

评论

0赞 4/29/2022
在单击处理程序中,指的是 <button>,而不是 .使用箭头函数:thismyBtnthis.ref.addEventListener("click", () => this.clicked());

答:

2赞 R4ncid 4/29/2022 #1

你快到了

代码中的问题是这在回调中的含义

按下按钮时是按钮,除非您另有说明this

class Button {
  constructor(name, id) {
    this.name = name;
    this.ref = document.getElementById(id);


    this.init();
  }

  init() {
    this.ref.addEventListener("click", this.clicked.bind(this));
  }

  clicked() {
    console.log(this.name);
  }
}

let myBtn = new Button('My button', "test");
<button id="test">Click me</button>

评论

1赞 4/29/2022
在发布答案之前,请检查是否有重复项。2015 年之后发布的任何 JS 问题都是重复的。
0赞 R4ncid 4/29/2022
2015 年之后@ChrisG所有 JS 问题吗?:)
1赞 4/29/2022
好吧,其中 99,99% ;)在这里花几个月的时间(JS 标签),一遍又一遍地重复同样的 30 个问题。我是认真的。