如何防止在window.location.htm(重定向)之后查找DOM元素



index.html页面中,我有以下代码

<body>
<h1>First page</h1>
<button id="submitBtn">Submit</button>
<script src="script.js"></script>
</body>

JS是一个简单的脚本,可以将页面重定向到另一个页面-second.html

document.getElementById('submitBtn').addEventListener('click', function(e) {
e.preventDefault();
window.location.href = 'another_file.html';
})

加载第二个页面后,控制台会给出-类型错误:无法读取null的属性(读取"addEventListener"(。这是可以理解的,因为下一页没有子界面Btn

如何避免此错误?

感谢

您可以在将事件附加到它之前检查它是否存在。

var elem = document.getElementById('submitBtn');
elem && elem.addEventListener('click', function(e) {
e.preventDefault();
window.location.href = 'another_file.html';
})

至于你的设计决策,我认为它的结构方式确实对所有函数使用了script.js,唯一的区别是页面之间的差异,页面本身有一个最小的<script>标签来初始化和满足自己的内容。

因此,对于这个例子,虽然两者共享相同的script.js,但只有index.html页面会在其中包含这段代码。second.html根本不应该检查该元素。

您在"another_file.html"?

<script src="script.js"></script>

因为如果你这样做,这就是问题的根源。

最新更新