Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组中的javascript函数参数_Javascript_Arrays_Function_Object - Fatal编程技术网

数组中的javascript函数参数

数组中的javascript函数参数,javascript,arrays,function,object,Javascript,Arrays,Function,Object,我想做的是 $.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, 7

我想做的是

    $.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(', '));
    });
};
错误总是未捕获类型错误:类型错误或未捕获类型错误:非法调用

使用

其中
选项[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]);
    });
});

演示:

选项
必须具有正确的结构。和
img
必须是一个DOM元素afaik@foxx:必须使用
canvas.drawImage.apply(canvas,options[n])
(将
canvas
作为第一个参数传递)。很好,以前确实尝试过apply(),但是用这个代替canvas,愚蠢的我,谢谢
drawImage
接受多个参数,而不仅仅是一个字符串参数
foo(a,b)
不同于
foo('a,b')
。这只是因为字符串中有逗号并不能使其成为参数列表。
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]);
    });
});