2013-01-04 134 views
4

嗯,我想學習一些JavaScript,但這是一個痛苦。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,則不會加載(正如人們所期望的那樣)。

有人知道這有什麼問題嗎?

+8

不相關,但爲什麼你使用IE學習JavaScript?這是最糟糕的JS環境,他們的開發人員工具與其他瀏覽器相比具有低於標準的水平。 – ThiefMaster

+2

您正在瀏覽器中運行此腳本,對吧?它幾乎聽起來像你的JavaScript被解釋爲VBScript,從錯誤消息的外觀。 – jbabey

+0

顯然不是「這似乎只是我的電腦不知道窗口是什麼,如果我嘗試在瀏覽器中打開HTML ...」 – Popnoodles

回答

8

It is from an external js file and it is the only file linked to the page.

好的。

When I double click this file I get the following error

聽起來你雙擊/運行.js文件,這將嘗試在瀏覽器之外運行腳本,就像一個命令行腳本。這可以解釋此錯誤:

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

...不是一個錯誤,你會在瀏覽器中看到的。當然,瀏覽器是提供window對象的東西。

附錄:作爲行動的過程,我建議打開相關HTML文件,並採取偷看控制檯。如果您沒有看到任何內容,則可能您的window.onload定義僅僅是在後點擊瀏覽器觸發window.onload事件。

17

窗口對象表示瀏覽器中打開的窗口。由於您沒有在瀏覽器中運行代碼,而是通過Windows腳本宿主運行,解釋器將無法找到窗口對象,因爲它不存在,因爲您不在Web瀏覽器中。