所以我有一个我试图创建的网站,我只是一次又一次地遇到同样的错误。当我双击我的index.html时,下面的所有代码都可以正常工作,但如果我使用";包裹索引.html";在控制台中,它说";未捕获引用错误:未定义测试";。HTML是:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Learn Ambivalendrish</title>
<link rel="stylesheet" href="/style/index.scss">
<script src="js/script.js"></script>
</head>
<body>
<h1 onclick="test()">This is a header for testing purpose</h1>
</body>
</html>
我的js是:
function test(){
alert('test alert')
}
我已经试过做了
export function test(){
alert('test alert')
}
和
let test = () =>{
alert('test alert')
}
模块绑定器希望脚本成为程序的入口点。
您的问题是希望脚本创建一个全局变量,然后从外部读取该全局变量。
bundler没有预料到这一点,所以当它重写脚本时,它不会注意确保创建一个具有该名称的全局变量。
重写代码,使脚本成为切入点。
不要使用内部事件属性,请将事件处理程序与addEventListener
绑定。
addEventListener('DOMContentLoaded' () => {
const heading = document.querySelector('h1');
heading.addEventListener(test);
});
旁白:标题并非设计为交互式控件。默认情况下:鼠标经过它们时,它们不会做出反应。它们看起来不像你可以点击的东西。屏幕阅读器不会宣布它们是交互式的。你不能给他们打标签。如果你想点击一些东西来触发JS,可以使用<button>
。