JavaScript: ‘venster’ is niet gedefinieerd

Ik probeer JavaScript te leren, maar de volgende code heeft me veel problemen gegeven:

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();
};

Het is van een extern JS-bestand en het is het enige bestand dat is gekoppeld aan de pagina. findSeat, findMaleSeats, getSeatId, EN initSeatszijn allemaal een beetje later in het bestand gedefinieerd. Wanneer ik dubbel op dit bestand klik, krijg ik de volgende foutmelding:

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

Ik heb al geprobeerd de code naar andere plaatsen in het bestand te verplaatsen en een andere functie (zelfs een lege functie) toe te wijzen aan window.onloaden vele andere dingen. Het lijkt erop dat mijn computer niet weet wat windowis. En als ik de HTML in een browser probeer te openen, is het niets laadt (zoals men zou verwachten).

weet iemand wat er mis is?


Antwoord 1, Autoriteit 100%

Het is van een extern JS-bestand en het is het enige bestand dat is gekoppeld aan de pagina.

OK.

Wanneer ik dubbelklik op dit bestand krijg ik de volgende fout

Het lijkt erop dat u dubbelklikt op/een .js-bestand uitvoert, dat zal proberen het script buiten de browser uit te voeren, zoals een opdrachtregelscript. En dat zou deze fout verklaren:

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

… geen fout die je in een browser ziet. En natuurlijk is het de browser die het window-object levert.

ADDENDUM: ik raad u aan het relevante HTML-bestandte openen en een kijkje te nemen op de console. Als u daar niets ziet, wordt uw window.onload-definitie waarschijnlijk geraakt nadatde browser de gebeurtenis window.onloadheeft geactiveerd .


Antwoord 2, autoriteit 90%

Het window-object vertegenwoordigt een geopend venster in een browser. Aangezien u uw code niet in een browser uitvoert, maar via Windows Script Host, kan de interpreter het window-object niet vinden, aangezien het niet bestaat, aangezien u zich niet in een webbrowser bevindt.


Antwoord 3, autoriteit 46%

Als u probeert toegang te krijgen tot een ongedefinieerde variabele, krijgt u een ReferenceError.

Een oplossing hiervoor is om typeofte gebruiken:

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

of een try-catch:

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

Hoewel typeof windowwaarschijnlijk de schoonste van de twee is, kan de try-catch in sommige gevallen toch nuttig zijn.

Other episodes