【发布时间】:2021-07-21 05:24:20
【问题描述】:
我对 JS 非常陌生,在尝试将一些 JS 分成模块时遇到了问题。我认为这是一个简单的解决方法,但我希望这里有人可以帮助我朝着正确的方向前进。如果我将其全部放入一个 JS 文件并通过标签直接将其与 index.html 链接,我的代码就可以正常工作,因此在转移到模块时会出现一些问题。
在我的 HTML 中,我有几个元素会根据用户在网站上单击的按钮来改变可见性。在我尝试将其放入模块之前,原始脚本文件中编写的 JS 运行良好:
showHideSections = (section) => {
if (section.classList.contains("hidden")){
section.classList.remove("remove-tab");
section.classList.remove("slideout");
... };
所以,我在代码开头添加了 export const 以将其导出到 main.js 文件:
export const showHideSections = (section) => { ...
然后导入到main.js中:
import { ..., showHideSections, ... } from "./modules/script.js"
window.addEventListener("DOMContentLoaded", () => {
...
showHideSections();
... });
现在我得到了 Uncaught TypeError: cannot read property "ClassList" of undefined.
我猜这与 JS 移入模块后代码运行的顺序有关,但在几次尝试指示代码以不同方式执行后,我感觉卡住了。我尝试调整 main.js 上的 addEventListener 以在“加载”与 DOM 内容加载时执行。我还尝试为 script.js 文件中的元素创建一个对象作为解决方法,但那里也没有骰子。
有什么想法吗?
【问题讨论】:
标签: javascript html import module export