作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
代码:
function Hotel(name,rooms,bookings){
this.name = name;
this.rooms = rooms;
this.bookings = bookings;
this.checkAvailability = function(){
return this.rooms - this.bookings;
}
this.bookRoom = function(){
if(this.checkAvailability() > 1){
return this.bookings++;
}
}
this.cancelBooking = function(){
if(this.bookings < 1){
return this.bookings--;
}
}
}
var grandHotel = new Hotel('Hotel Grand', 20, 5);
var addBooking = document.getElementById("book");
addBooking.addEventListener('click', grandHotel.bookRoom, false);
如果我单击 addBooking 元素,我会收到此错误:
Uncaught TypeError: this.checkAvailability is not a function.
最佳答案
您需要更改事件的绑定(bind)方式。
addBooking.addEventListener('click', grandHotel.bookRoom.bind(grandHotel), false);
或
addBooking.addEventListener('click', function() { grandHotel.bookRoom(); }, false);
关于javascript - 未捕获的类型错误 : method is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33325011/
我是一名优秀的程序员,十分优秀!