![](/img/trans.png)
[英]Uncaught TypeError: $.fn.DataTable.isDataTable is not a function
[英]Uncaught TypeError: $.fn.maze is not a function
js和html的新功能。 在这里和许多网站都尝试过不同的答案,但是对于某些原因,我的代码仍然无法正常工作。 我创建了一个名为mazePlugin.js的插件,另一个名为test.js的脚本,以及我的html文件,名为test.html。 单击按钮后,将调用测试脚本,将ajax请求发送到我的服务器(检查它是否有效),并在成功后尝试调用我的插件并绘制一个迷宫。 我知道在哪里定义画布可能存在问题。 但这不是我当前的问题。
我的HTML
<!DOCTYPE html> <html> <head>
<meta charset="utf-8" />
<title>test page</title> </head> <body>
<p id="paragraph">first paragraph</p>
<p id="paragraph2">2nd paragraph</p>
<input id="button" type="button" value="start game"/>
<form>
Name:<br/>
<input id="name" type="text"/><br/>
Columns:<br/>
<input id="col" type="number"/><br/>
Rows:<br/>
<input id="row" type="number"/> </form>
<script type="text/javascript" src="../Scripts/jquery-3.2.1.js"></script>
<script type="text/javascript" src="../Scripts/mazePlugin.js"></script>
<script type="text/javascript" src="../Scripts/test.js"></script>
</body>
</html>
我的插件
(function($) {
$.fn.maze = function (data) {
var mazeObject = {
draw: function() {
var rows = data["Rows"];
var cols = data["Cols"];
var cellWidth = 300 / cols;
var cellHeight = 300 / rows;
var initialRow = data["Start"]["Row"];
var initialCol = data["Start"]["Col"];
var mazeAsString = data["Maze"];
//draws the maze
var current = 0;
for (var i = 0; i < rows; i++) {
for (var j = 0; j < cols; j++) {
if (mazeAsString[current] == '1') {
context.fillRect(cellWidth * j, cellHeight * i, cellWidth, cellHeight);
}
current++;
}
}
//creating players image
var united = new Image();
united.src = "../Style/united.png";
united.onload = function() {
context.drawImage(united, initialRow, initialCol, cellWidth, cellHeight);
}
return this;
}
};
return mazeObject;
};
}(jQuery));
我的test.js
$('#button').click(function () {
var canvas = document.createElement('canvas');
canvas.id = "mazeCanvas";
canvas.width = 300;
canvas.height = 300;
canvas.style = "border:2px black solid";
document.body.appendChild(canvas);
var name = $('#name').val();
var rows = $('#row').val();
var cols = $('#col').val();
var context = canvas.getContext("2d");
var mazeObject;
$.ajax({
url: "Http://localhost:52800/api/Maze",
data: { 'name':name, 'rows':rows, 'cols':cols },
success: function (data) {
mazeObject = $.fn.maze(data);
mazeObject.draw();
},
error: function() {
alert('an error has occurred');
}
});
});
我得到的响应是test.js:40 Uncaught TypeError:$ .fn.maze不是Object.success(test.js:40)在Object.fireWith着火时(jquery-3.2.1.js:3317)的函数[作为resolveWith](jquery-3.2.1.js:3447)在XMLHttpRequest处完成(jquery-3.2.1.js:9272)。 (jquery的-3.2.1.js:9514)
您错误地调用了插件。 它应该是:
mazeObject = $.maze(data);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.