【发布时间】:2021-06-08 14:36:00
【问题描述】:
我正在努力解决以下问题: 我必须基本上只使用 JS 来创建按钮。
//btn add
let button_add = document.createElement("button");
let button_add_class = button_add.className = "btn-add";
let button_add_click = button_add.setAttribute("onclick", "addBookToShoppingCart(first)");
let buttonText1 = document.createTextNode("Add to Shopping Cart");
button_add.appendChild(buttonText1);
this.mainBookScreen.appendChild(button_add);
按钮需要调用addBookToShoppingCart(first)方法,该方法在ShoppingCart类中。
class ShoppingCart{
addBookToShoppingCart(bookObject) {
alert('Hello World!');
}
}
如果我点击按钮,我会在浏览器的控制台中收到以下错误消息:
未捕获的 ReferenceError:未定义 addBookToShoppingCart
在 HTMLButtonElement.onclick
编辑: 我的最新代码在这里:
class ShoppingCart{
addBookToShoppingCart(bookObject) {
alert('Hello World!');
}
}
class Shop {
constructor() {
this.shoppingCart = new ShoppingCart("Shopping Cart");
this.mainBookScreen = document.getElementById("mainBookScreen");
}
addBookToScreen(book) {
//btn add
const button_add = document.createElement("button");
button_add.classList.add("btn-add");
button_add.textContent = "Add to Shopping Cart";
button_add.addEventListener("click", function(){this.shoppingCart.addBookToShoppingCart(first)});
this.mainBookScreen.appendChild(button_add);
}
}
class Book {
//book constructors
}
let first = "TEST";
let book = [];
book[0] = new Book("bla1", "bla2", "bla3");
boook[1] = new Book("ble1", "ble2", "ble3");
const shop = new Shop();
shop.addBookToScreen(book[0]);
shop.addBookToScreen(book[1]);
如果我点击按钮,浏览器中的错误消息:
无法读取未定义的属性“addBookToShoppingCart” 在 HTMLButtonElement。
【问题讨论】:
-
因为
addBookToShoppingCart不是全局变量,您永远不应该使用 setAttribute 来查找事件
标签: javascript oop dom-events