onclick事件侦听器无法正常工作

时间:2020-07-07 20:42:32

标签: javascript html

如何在类内部添加事件侦听器。无论我如何实例化onclick函数,它都行不通。过程是相同的,并且工作在类之外而没有this。参考。但不适用于此。类内的引用。问题不只是添加参考功能。这是在类内部添加引用函数的正确方法。回答了。使用es6箭头功能自动绑定。

class MultiPage {
      //constructor is used to initialize state and events
      constructor() {
        this.purchaseButton = document.getElementsByClassName("button");
        this.itemId = document.getElementsByClassName("itemId");
        this.description = document.getElementsByClassName("description");
        this.price = document.getElementsByClassName("price");
        this.quantity = document.getElementsByClassName("quantity");
        this.type = document.getElementsByClassName("type"); //outer set loop through inner elemnts
        this.pushProductOption = [];
        this.photo = document.getElementsByClassName("photoSet"); //outer set loop through inner elemnts
        this.pushPhotoSet = [];
        this.cart = document.getElementsByClassName("cart")[0];
        this.setEventListeners();
      }
    
      setEventListeners() {
        for (let i = 0; i < this.purchaseButton.length; i++) {
          this.purchaseButton[i].addEventListener(
            "click",
            this.addToCart(
              this.purchaseButton[i],
              this.itemId[i].innerHTML,
              this.description[i].innerHTML,
              this.photo[i].src,
              this.price[i].innerHTML,
              1,
              this.type[i].value
            )
          );
        }
      }
}

2 个答案:

答案 0 :(得分:1)

this.purchaseButton[i].addEventListener("click", () =>
    this.addToCart(
        this.purchaseButton[i],
        this.itemId[i].innerHTML,
        this.description[i].innerHTML,
        this.photo[i].src,
        this.price[i].innerHTML,
        1,
        this.type[i].value
    )
);

您应该给一个函数作为第二个参数,我希望用箭头函数包装它可以解决问题。

答案 1 :(得分:-1)

这应该可以帮助您入门。当您使用e6时,它将自动绑定。这是旧方法。

input_df=spark.createDataFrame(sc.textFile("test.txt").map(lambda x : tuple([x[0:2], x[3:]])))

+-----------+-----------------+
|    _1     |       _2        | 
+-----------+-----------------+
|         01|"Alice","The Cat"|
|         02|              Yes|
|         03|       2000,01,01|
|         01|  "Bob","The Dog"|
|         02|               No|
|         03|       2001,01,04|
+-----------+-----------------+
types=["01","02","03"]
for type in types:
    input_df.filter(col("_1") == type).write.mode('overwrite').csv(f"{type}_rows.csv")