Javascript:';窗口';没有定义
我正在尝试学习JavaScript,但以下代码给我带来了很多麻烦:Javascript:';窗口';没有定义,javascript,dom,Javascript,Dom,我正在尝试学习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) {
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();
};
我已经尝试将代码移动到文件中的其他位置,为window.onload
和许多其他内容分配不同的函数(甚至是空函数)。我的电脑似乎不知道什么是window
。如果我尝试在浏览器中打开HTML,则不会加载任何内容(正如人们所期望的那样)
有人知道这有什么问题吗?窗口对象表示浏览器中打开的窗口。由于您不是在浏览器中运行代码,而是通过Windows脚本主机运行代码,因此解释器将无法找到窗口对象,因为它不存在,因为您不在web浏览器中 它来自外部js文件,是链接到页面的唯一文件 嗯 当我双击这个文件时,我得到了以下错误 听起来您正在双击/运行一个.js文件,该文件将尝试在浏览器之外运行脚本,就像命令行脚本一样。这就解释了这个错误:
Windows脚本主机错误:未定义“窗口”代码:800A1391
。。。这不是在浏览器中看到的错误。当然,浏览器提供了窗口
对象
附录:作为一种做法,我建议打开相关的HTML文件并浏览一下控制台。如果在那里看不到任何内容,很可能是您的
窗口。在浏览器触发窗口后,onload
定义只是被点击。onload
事件。尝试访问未定义的变量将抛出引用错误
解决方法是使用typeof
:
if(窗口类型==“未定义”){
log(“Oops,`window`未定义”)
}
或者试一试:
try { window } catch (err) {
console.log("Oops, `window` is not defined")
}
虽然typeof window
可能是这两个窗口中最干净的一个,但try-catch在某些情况下仍然很有用。不相关,但是为什么要使用IE学习JavaScript呢?这是你所能拥有的最差的JS环境,与其他浏览器相比,他们的开发工具是差强人意的。你在浏览器中运行这个脚本,对吗?从错误消息的外观来看,您的JavaScript几乎听起来像是被解释为VBScript。显然不是“我的计算机似乎不知道窗口是什么。如果我尝试在浏览器中打开HTML…”哇,JavaScript的你们总是这么快吗?无论如何,非常感谢你的帮助,这才是真正的问题所在。我甚至有点不好意思问这么愚蠢的问题(现在我看到答案了)。顺便说一句,我没有使用IE。好吧,我们了解它的作用,但是如何着手解决这个问题?这个答案与最初的问题有什么关系?较旧的答案(如)已经回答了原始海报提出的问题。