javascript不包含文件?

时间:2012-06-19 04:10:08

标签: javascript jquery html file

我在尝试使用javascript文件中的函数时遇到了问题,我在启动页面时已将其包含在另一个文件中。

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

然而,当我尝试这个时,我得到一些'未捕获的类型错误未定义不是函数'。是什么赋予了?下面是我输入浏览器的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();

}

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

canvasManager中的new canvasManager()名称是指canvasManager中的var canvasManager,而不是您在其他JS文件中定义的canvasManagercanvasManagerinitializeDesign()的声明会影响另一个声明。

答案 1 :(得分:0)

在以下位置更改变量名称:

 var canvasManager = new canvasManager();

当您定义该局部变量时,它会使用相同的名称取代全局函数,以便new canvasManager()仅引用您的局部变量而不是全局函数。因此,由于局部变量的值仍未定义,因此您会看到错误。

将其更改为:

 var theCanvasManager = new canvasManager();

或类似的东西,它应该可以正常工作。


虽然我不推荐这个(因为我认为它不是超级可读代码并且可能导致其他意外错误),你也可以这样做:

 var canvasManager = new window.canvasManager();

这里明确指的是全局范围的函数,因此它与局部变量不同。