初学者Javascript问题,(未定义的鼠标事件)书';s示例代码不工作?
我只是从JavaScript和编程开始。当我试图从外部utils.JS文件中使用时,本JS书提供的示例代码在控制台日志中提供了一个未定义的函数。我不知道为什么它没有定义。该文件的路径是正确的,因为我的IDE找到了它。你知道为什么它没有定义吗? 这是主页初学者Javascript问题,(未定义的鼠标事件)书';s示例代码不工作?,javascript,Javascript,我只是从JavaScript和编程开始。当我试图从外部utils.JS文件中使用时,本JS书提供的示例代码在控制台日志中提供了一个未定义的函数。我不知道为什么它没有定义。该文件的路径是正确的,因为我的IDE找到了它。你知道为什么它没有定义吗? 这是主页 <canvas id="canvas" width="400" height="400"></canvas> <script src="js/utils.js"></script>
<canvas id="canvas" width="400" height="400"></canvas>
<script src="js/utils.js"></script>
<script>
window.onload = function() {
var canvas = document.getElementById('canvas');
mouse = utils.captureMouse(canvas);
canvas.addEventListener('mousedown', function(event) {
console.log("x:" + mouse.x + ",y:" + mouse.y);
}, false);
};
</script>
这是控制台输出
file:C:/projects/js/utils.js
ReferenceError: utils is not defined utils.js:1
ReferenceError: utils is not defined main.html:14
提前谢谢 此处出现错误:
utils.captureMouse
,因为尚未定义utils
,因此无法向其添加属性。在该行之前添加一行:
utils = utils || {};
这是一种将变量初始化为空对象(如果尚未初始化)的简便方法。n通常在声明变量时,还应使用
var
关键字,但在这种情况下,似乎希望utils
成为全局变量。您需要在utils.captureMouse
之前定义utils
杨扬-莫莫说
var utils = {};
utils.captureMouse = function(element) {
utils
在您定义它之前不是对象。在分配utils.captureMouse之前需要初始化utils={}
。这很有效,谢谢!我不知道为什么这本书没有提到定义UTIL。谢谢你的回复,但是我在使用UTIL.captureMouse=function(element)之前使用你的建议时也遇到了同样的错误。但如果我只是对UTIL使用一个直接的var,它确实起了作用。
var utils = {};
utils.captureMouse = function(element) {