我在 MyModule.js :
中定义了以下模块MyModule.js:
MyModule = {
controller: {
paintCar: function(color){
//PAINTING PROCESS
}
},
tester: {
...
},
};
然后,我有另一个javascript文件 other.js :
other.js :
MyModule.controller.paintCar('red');
我的index.html
<body>
<script scr="MyModule.js"></script>
<script src="other.js"></script>
</body>
所有这些文件都放在Eclipse Dynamic Web Project的WebContent目录下。
在 other.js 中,当我尝试运行上面的代码时,出现错误“ MyModule未定义”。为什么呢?
答案 0 :(得分:1)
您尚未提及您的环境,但通常您必须确保MyModule.js
中的JavaScript在other.js
中的JavaScript之前执行,因为您需要MyModule.js
来设置MyModule
变量。
您的工作方式因环境而异。在网络浏览器中,您可以通过输入两个script
标记来实现这一点,首先是MyModule.js
标记,然后是other.js
标记(尽管经常在网站上使用,但您希望有一个构建过程,将您的脚本组合到一个文件中,以最大限度地减少HTTP请求)。在NodeJS中,有整个require
机制。
更新:
看起来像是一个错字:
<body>
<script scr="MyModule.js"></script>
^^-- here, they're transposed
<script src="other.js"></script>
</body>
如果这个拼写错误实际上不在您的文件中,那么请查看这些文件是Web服务器所期望的位置,Web服务器不会被大小写抛出,这类事情。从根本上说,这是正确的。
答案 1 :(得分:1)
你在src
拼错<script scr="MyModule.js">
:<script src="MyModule.js"></script>
<script src="other.js"></script>
。这可以由basic automated QA testing获取。
(理论确认之前的原始答案)据推测,因为您没有正确加载脚本文件。既然你没有向我们展示这样做的代码(或者甚至告诉我们你正在使用什么环境),很难确切地说你出错了。
假设您在网页中使用客户端JS,您的代码应该类似于:
{{1}}
订单很重要。结束标记是必需的。自闭标签语法是不可接受的(除非文档作为application / xhtml + xml提供)
(这使用HTML 5语法。对于HTML 4 / XHTML 1,添加类型属性。对于HTML 3.2,添加语言属性)