2012-06-19 82 views
0

我在嘗試在啓動頁面時在另一個文件中包含的JavaScript文件中使用某個函數時遇到了問題。javascript不包含文件?

在文件design.js中我想做var x = new canvasManager();而canvasManager在canvasManager.js中定義。

但是當我嘗試這個時,我得到了一些未捕獲的類型錯誤undefined不是函數。是什麼賦予了?下面是我的HTML文件中的相關代碼,我進入瀏覽器:

<link rel="stylesheet" type="text/css" href="styles.css" /> 
<script type="text/javascript" src="jquery/jquery.js"></script> 
<script type="text/javascript" src="jquery/kinetic.js"></script> 

<script type="text/javascript" src="designManager.js"></script> 
<script type="text/javascript" src="canvasManager.js"></script> 
<script type="text/javascript" src="gateManager.js"></script> 
<script type="text/javascript" src="wireManager.js"></script> 
<script type="text/javascript" src="toolbarManager.js"></script> 
<script type="text/javascript" src="objectDrawing.js"></script> 

<script type="text/javascript" src="util/mouseEventManager.js"></script> 
<script type="text/javascript" src="util/hotkeyManager.js"></script> 
<script type="text/javascript" src="util/htmlUtils.js"></script> 
<script type="text/javascript" src="design.js"></script> 


<script type="text/javascript"> 
    $(document).ready(function(){ 
     initializeDesign(); 
    }); 
</script> 

//在design.js ...

function initializeDesign() { 

    var canvasManager = new canvasManager(); 

} 

感謝您的任何幫助。

+0

canvasManager.js是什麼樣子? – chrisvillanueva

+0

有什麼辦法可以整合這些JS文件嗎? – Charlie

+0

可能是拼寫錯誤。 –

回答

5

canvasManagernew canvasManager()是指canvasManagervar canvasManager名稱,而不是你在其他JS文件中定義的canvasManager。 的聲明在initializeDesign()中陰影另一個聲明。

+0

我的兄弟們!很好的接收 – JDS

0

在改變你的變量名:

var canvasManager = new canvasManager(); 

當你定義一個局部變量,它取代了全局函數具有相同的名稱,這樣new canvasManager()只是指局部變量不是全局函數。因此,由於局部變量的值仍未定義,因此會出現您看到的錯誤。

將其更改爲:

var theCanvasManager = new canvasManager(); 

或類似的東西,它應該工作的罰款。


雖然我不會推薦這(因爲我認爲這是不是超級可讀的代碼,並可能導致其他意外的錯誤),你也可以這樣做:

var canvasManager = new window.canvasManager(); 

這裏你明確提及到全局範圍的函數,因此它與局部變量不同。