2012-04-10 43 views
2

在爲此Web應用程序編碼同一HTML文件中的CSS,Javascript和HTML5代碼之後,我決定將CSS和Javascript拆分爲各自的外部文件並將它們包含到HTML5文件中。外部Javascript - 函數未定義?

我遇到了一個小問題哪個Javascript代碼將無法正常工作,直到我說以下內容:

window.onload = function() { //script code} 

現在好像一切,但功能不加載。由於我發現使用Firebug的錯誤說功能尚未定義,這顯然是。

下面是代碼:

的HTML頁面 http://turing.cs.olemiss.edu/~sbadams2/RebelFlow.html

JS文件 http://turing.cs.olemiss.edu/~sbadams2/RebelFlow.js

我讀過其它響應其內的狀態,該路徑可能是不正確的,但一切除了實際的功能,Javascript文件可以正常加載。

我不確定可能是什麼原因導致此問題。

+0

所以你所有的函數沒有定義,或者只是'window.onload'不工作?歡迎來到SO〜 – 2012-04-10 02:22:40

+0

很顯然,window.onload在加載Javascript代碼的時候會有一定程度的工作,但不幸的是,現在說盡管事實上他們是這樣的,但函數並沒有被定義。我在Javascript和Web應用程序方面相當新穎。 – Sbadams2 2012-04-10 02:25:42

+1

當你把所有的東西編碼在一起時,JavaScript在哪裏,頭部還是身體的盡頭? – j08691 2012-04-10 02:30:07

回答

5

問題是JavaScript有函數範圍,這意味着函數內定義的變量/函數只在該函數內部可見,而不在外部。 window.onload=function(){/*your code here*/}創建一個額外的範圍,因此例如您的createWellPump()函數是不知道的window.onload包裝函數之外。

最簡單的解決方案是再次刪除window.onload包裝,並直接在關閉</body>標記之前加載腳本。

+0

釘住它。這似乎是問題。 – Sbadams2 2012-04-10 02:36:44