好吧,我正在尝试学习一些JavaScript,但这是一个痛苦.
以下代码给了我很多麻烦:
window.onload = function () {
for ( var i = 0; i < seats.length; i++) {
for ( var j = 0; j < seats.length; j++) {
document.getElementById(getSeatId(i, j)).onclick = function(evt) {
getSeatStatus(getSeatId(i, j));
};
}
}
document.getElementById("search").onclick = findSeat;
document.getElementById("male_search").onclick = findMaleSeats;
initSeats();
};
Run Code Online (Sandbox Code Playgroud)
它来自外部js文件,它是链接到页面的唯一文件.findSeat,findMaleSeats,getSeatId,initSeats都是稍后在文件中定义的.当我双击此文件时,我收到以下错误(请注意,这是我的母语翻译):
Windows脚本主机错误:未定义"窗口"代码:800A1391
我已经尝试将代码移动到文件中的其他位置,尝试为window.onload和许多其他东西分配不同的函数(甚至是空函数).看来我的电脑似乎不知道是什么窗口.如果我尝试在浏览器中打开HTML,则无法加载(正如人们所期望的那样).
有人知道这有什么问题吗?
Aym*_*hat 29
window对象表示浏览器中的打开窗口.由于您没有在浏览器中运行代码,而是通过Windows脚本宿主,因此解释器将无法找到窗口对象,因为它不在Web浏览器中,因为它不存在.
svi*_*gen 13
它来自外部js文件,它是链接到页面的唯一文件.
好.
当我双击此文件时,我收到以下错误
听起来你是双击/运行.js文件,它会尝试在浏览器之外运行脚本,就像命令行脚本一样.这可以解释这个错误:
Windows Script Host Error: 'window' is not defined Code: 800A1391
...不是您在浏览器中看到的错误.当然,浏览器是提供window对象的东西.
附录:作为一种行动方案,我建议打开相关的HTML文件并查看控制台.如果你在那里看不到任何东西,那么在浏览器触发事件后,你的window.onload定义很可能就被击中了.window.onload
尝试访问未定义的变量会抛出一个ReferenceError.
对此的解决方案是使用typeof:
if (typeof window === "undefined") {
console.log("Oops, `window` is not defined")
}
Run Code Online (Sandbox Code Playgroud)
或尝试捕获:
try { window } catch (err) {
console.log("Oops, `window` is not defined")
}
Run Code Online (Sandbox Code Playgroud)
虽然typeof window可能是两者中最干净的,但 try catch 在某些情况下仍然很有用。
| 归档时间: |
|
| 查看次数: |
76306 次 |
| 最近记录: |