我想做的是这个
$.each($(".canvas"), function(n) {
var canvas = $(this)[0].getContext("2d");
canvas.drawImage(options[n]);
});
其中选项将是一个参数数组,但无法弄清楚应该如何格式化该数组才能使其工作
显然不是
['img, 0, 0, 70, 17, 21, 16, 70, 17', 'img, 0, 0, 80, 12, 21, 16, 70, 17']
这两者都不是
[''+img+', 0, 0, 70, 17, 21, 16, 70, 17', ''+img+', 0, 0, 80, 12, 21, 16, 70, 17']
也不是这个
{0: [img, 0, 0, 70, 17, 21, 16, 70, 17]}
这也行不通
var options = [[img, 0, 0, 70, 17, 21, 16, 70, 17],
[img, 0, 16, 70, 17, 21, 16, 70, 17],
[img, 0, 32, 70, 17, 21, 16, 70, 17],
[img, 0, 48, 70, 17, 21, 16, 70, 17]];
img.onload = function() {
$.each($(".canvas"), function(n) {
var canvas = $(this)[0].getContext("2d");
canvas.drawImage(options[n].join(', '));
});
};
错误始终为“Uncaught TypeError: Type error”或“Uncaught TypeError: Illegal invocation”
最佳答案
使用Function.apply
.
canvas.drawImage.apply(canvas, options[n]);
其中选项[n]
看起来像
[img, 0, 0, 70, 17, 21, 16, 70, 17]
完整示例:
var options = [[img, 0, 0, 70, 17, 21, 16, 70, 17],
[img, 0, 16, 70, 17, 21, 16, 70, 17],
[img, 0, 32, 70, 17, 21, 16, 70, 17],
[img, 0, 48, 70, 17, 21, 16, 70, 17]];
$(img).load(function()
{
$(".canvas").each(function(n)
{
var canvas = this.getContext('2d');
canvas.drawImage.apply(canvas, options[n]);
});
});
关于数组中的 JavaScript 函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6641742/