javascript - Javascript ES6 类 - 方法无法访问在类构造函数中定义的类属性
问题描述
所以我试图在一个类中构建我的代码,以便它可以更有条理,但我正在努力。我有代码:
class App {
constructor() {
// Get elements from DOM
const titleBox = document.getElementById('titleBox');
const navBox = document.getElementById('navBox');
const navLinks = document.querySelectorAll('.header__listLink');
const headerTitle = document.getElementById('headerTitle');
const headerSubtitle = document.getElementById('headerSubtitle');
const ulNav = document.getElementById('ulNav');
const ulNavLinks = document.querySelectorAll('.ulNavLink');
// for each nav link, add an event listener, expanding content area
navLinks.forEach((link) => {
link.addEventListener('click', this.clickedLinkState);
});
}
clickedLinkState(e) {
e.preventDefault();
titleBox.classList.remove("header__title-box");
titleBox.classList.add("header__title-box--linkClicked");
headerTitle.classList.remove("header__title");
headerTitle.classList.add("header__title--linkClicked");
headerSubtitle.classList.remove("header__subtitle");
headerSubtitle.classList.add("header__subtitle--linkClicked");
ulNav.classList.remove("header__listInline");
ulNav.classList.add("header__listInline--linkClicked");
navBox.classList.remove("header__nav-box");
navBox.classList.add("header__nav-box--linkClicked");
ulNavLinks.forEach((navLink) => {
navLink.classList.remove("header__listLink");
navLink.classList.add("header__listLink--linkClicked");
});
}
}
const app = new App();
我得到了错误:“main.js:40 Uncaught ReferenceError: ulNavLinks is not defined at HTMLLIElement.clickedLinkState (main.js:40)”。'ulNavLinks' 是一个节点列表。
例如,我试图使用“this.titleBox = ...”来定义元素,但更糟糕的是,我无法从 clickedLinkState 方法访问它。在课外它正在工作。
为什么我无法访问我的方法中的“ulNavLinks”?如果我将它们声明为“this.titleBox”、“this.navBox”,为什么我不能在方法中访问我的属性?
解决方案
推荐阅读
- google-apps-script - 检索最新版本的 Google Doc 中的评论
- python - 如何从 CSV 文件中获取我的值以使用 python 加载到我的 SQL 数据库中?
- twitter-bootstrap - 将引导程序添加到 webpack
- python - Python:使用负载平衡运行多个 exe
- java - Spring Jpa Data Repository 使用 LinkedEntity 保存(更新)多对多关系
- java - 从 AsyncTask 获取 Int
- javascript - 在 vueJs 中修改使用 Apollo GraphQL 获取的属性
- graph - Web 负载测试 - 波浪形响应时间图表示什么?
- ruby - 如何通过 Ruby Selenium Binding(或 WATIR)创建 chrome 配置文件
- python - 参数解析期间的Python断言错误