javascript - Javascript 类对象中的回调方法(XMLHttpRequest)
问题描述
我似乎收到以下错误:this.getPageHTML is not a function
执行我的 Modal 类时。
constructor(trigger) {
this.trigger = trigger;
}
/**
* Show Modal
* @param {Element} trigger The element that is triggering the Modal.
*/
showModal(trigger = this.trigger) {
switch (trigger.dataset.modaltype) {
case "media":
this.getPageHTML(trigger.dataset.url, (response) => {
const htmlContent = response.getElementById("content");
const modalContent = document
.getElementById("modal")
.querySelector(".modal-window__content");
// Inject response into Modal content
modalContent.insertAdjacentHTML("beforeend", htmlContent.innerHTML);
});
break;
default:
break;
}
}
getPageHTML(url, callback) {
if (!window.XMLHttpRequest) return;
const xhr = new XMLHttpRequest();
// Get the HTML
xhr.open("GET", url);
xhr.responseType = "document";
xhr.onloadstart = this.requestStarted;
xhr.onprogress = this.updateRequestProgress;
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
xhr.onload = function () {
if (callback && typeof callback === "function") {
callback(this.responseXML);
}
};
}
};
xhr.send();
}
不知道为什么我的 getPageHTML 函数是“不是函数”?
在我的主 js 文件中,我这样调用类:
modalTriggers.forEach((trigger) => {
trigger.addEventListener("click", (e) => {
let modal = new Modal(trigger);
modal.showModal();
e.preventDefault();
});
});
可能是我在这里想念的非常明显的东西。我曾尝试将“this.getPageHTML”分配给像“this.getPageHTML = function(trigger.dataset.url, response) {...}”这样的匿名函数,但它似乎松散了“触发器”的含义。
解决方案
推荐阅读
- python-3.x - Mac 上的 Anaconda:无法将 Matplotlib 后端设置为 Agg
- android - 未能从 firebase 获取聊天数据到 recyclerview
- android - 使用 Sripe 的 Google Pay:在 Android 中出现意外的开发人员错误
- javascript - Javascript中带有空格的“未定义”变量的字符串连接
- nginx - Nginx 缓存问题与 Expires 标头
- javascript - 使用匹配将正则表达式解析为本地变量
- reactjs - 如何在 Reactjs 标签中使用 jquery
- java - 如何从 Firebase 存储设置图像视图?
- android - Android auto - Google play rejection for Dark mode - How to fix?
- r - 如何在 R 中保存使用 forestplot 包创建的图?