好吧,我正在尝试学习一些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();
};
它来自外部js文件,它是链接到该页面的唯一文件。 findSeat,findMaleSeats,getSeatId,initSeats都是稍后在文件中定义的。当我双击此文件时,我收到以下错误(请注意,这是我母语的翻译):
Windows脚本宿主 错误:未定义“窗口” 代码:800A1391
我已经尝试将代码移动到文件中的其他位置,尝试为window.onload和许多其他东西分配不同的函数(甚至是空函数)。看来我的电脑似乎不知道是什么窗口。如果我尝试在浏览器中打开HTML,则无法加载(正如人们所期望的那样)。
有人知道这有什么问题吗?
答案 0 :(得分:23)
窗口对象表示浏览器中的打开窗口。由于您没有在浏览器中运行代码,而是通过Windows脚本主机,因此解释器将无法找到窗口对象,因为它不存在,因为您不在Web浏览器中。
答案 1 :(得分:10)
它来自外部js文件,它是链接到该页面的唯一文件。
行。
当我双击此文件时,我收到以下错误
听起来像是双击/运行.js文件,它会尝试在浏览器外部运行脚本,就像命令行脚本一样。这可以解释这个错误:
Windows Script Host Error: 'window' is not defined Code: 800A1391
...不是您在浏览器中看到的错误。当然,浏览器提供window
对象。
ADDENDUM :作为一种行动方案,我建议您打开相关的 HTML文件并查看控制台。如果您没有看到任何内容,那么在浏览器触发window.onload
事件后,您的window.onload
定义可能只是被点击。
答案 2 :(得分:1)
尝试访问未定义的变量会抛出ReferenceError
。
对此的一种解决方案是使用typeof
:
if (typeof window === "undefined") {
console.log("Oops, `window` is not defined")
}