13

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、ファイルの少し後で定義されます。このファイルをダブルクリックすると、次のエラーが発生します。getSeatIdinitSeats

Windows Script Host
Error: 'window' is not defined
Code: 800A1391

私はすでにコードをファイル内の他の場所に移動し、別の関数(空の関数でも)をwindow.onload他の多くのものに割り当てようとしました。私のコンピュータは何であるかを知らないようwindowです。そして、ブラウザでHTMLを開こうとすると、何もロードされません(予想どおり)。

誰かがこれの何が悪いのか知っていますか?

4

3 に答える 3

32

windowオブジェクトは、ブラウザで開いているウィンドウを表します。ブラウザ内ではなくWindowsScriptHostを介してコードを実行しているため、Webブラウザ内にいないため、ウィンドウオブジェクトが存在しないため、インタプリタはウィンドウオブジェクトを見つけることができません。

于 2013-01-04T20:36:49.040 に答える
13

これは外部のjsファイルからのものであり、ページにリンクされている唯一のファイルです。

わかった。

このファイルをダブルクリックすると、次のエラーが発生します

コマンドラインスクリプトのように、ブラウザの外部でスクリプトを実行しようとする.jsファイルをダブルクリック/実行しているように聞こえます。そしてそれはこのエラーを説明するでしょう:

Windows Script Host Error: 'window' is not defined Code: 800A1391

...ブラウザに表示されるエラーではありません。そしてもちろん、ブラウザはwindowオブジェクトを提供するものです。

補遺:一連のアクションとして、関連するHTMLファイルを開き、コンソールを確認することをお勧めします。そこに何も表示されない場合は、ブラウザがイベントを起動した後window.onloadに定義がヒットしている可能性があります。window.onload

于 2013-01-04T20:39:28.207 に答える
10

未定義の変数にアクセスしようとすると、がスローされますReferenceError

これに対する解決策は、以下を使用することtypeofです。

if (typeof window === "undefined") {
  console.log("Oops, `window` is not defined")
}

またはキャッチを試してください:

try { window } catch (err) {
  console.log("Oops, `window` is not defined")
}

おそらく2つのうちで最もクリーンですが、場合によってはtrycatchtypeof windowが役立つこともあります。

于 2020-08-07T06:47:44.637 に答える