1 回答

TA貢獻1869條經(jīng)驗 獲得超4個贊
您不能使用的原因this是因為您位于addEventListener. 我不知道為什么,但是您可以創(chuàng)建一個引用當前對象的新對象,該對象可以在匿名函數(shù)中使用。有關(guān)為什么不能this在 inside 中使用的更多信息,addEventListener請參閱此答案
const cantaVideoModal = {
click: null,
target: null,
urlVideo: null,
config: function (c) {
this.click = c.click;
this.target = c.target;
this.urlVideo = c.urlVideo;
this.init();
},
init: function () {
this.click = (this.click) ? document.querySelector(this.click) : null;
this.target = (this.target) ? document.querySelector(this.target) : null;
let btnCloseVideo = document.querySelector('[data-close-modal]');
if(btnCloseVideo){
// we create a new variable that refer to the current content.
var self = this
btnCloseVideo.addEventListener('click', function() {
//call modalAction object here using self.
self.modalAction(/* some parameters */);
})
}
},
modalAction: function (act) {
let elementClick = this.click;
let elementtarget = this.target;
if (elementClick) {
elementClick.addEventListener('click', function (e) {
e.preventDefault();
if (elementtarget) {
if(act === "toggle")
elementtarget.classList.toggle('in');
if(act === "show")
elementtarget.classList.add('in');
if(act === "hide")
elementtarget.classList.remove('in');
}
})
}
}
}
PS我嘗試使用箭頭函數(shù)但無法使代碼正常工作。
添加回答
舉報