Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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 如何将函数参数传递给jquery.animate?_Javascript_Jquery - Fatal编程技术网

Javascript 如何将函数参数传递给jquery.animate?

Javascript 如何将函数参数传递给jquery.animate?,javascript,jquery,Javascript,Jquery,可能重复: 我试图传递一个函数参数作为jquery动画的设置,除非我无法让它工作 功能 function gridClick(a, b){ $(c).animate({ a : 0, b : 0 }, 10000) }; 调用函数 gridClick('top', 'left', this); 控制台日志显示a和b被显示为顶部和左侧,但它们实际上并不影响顶部和左侧的动画。这是一个语法错误还是发生了更多的错误?我认为不能使用对象文字将变量名用作

可能重复:

我试图传递一个函数参数作为jquery动画的设置,除非我无法让它工作

功能

function gridClick(a, b){
    $(c).animate({
        a : 0,
        b : 0
    }, 10000)
};
调用函数

gridClick('top', 'left', this);

控制台日志显示a和b被显示为顶部和左侧,但它们实际上并不影响顶部和左侧的动画。这是一个语法错误还是发生了更多的错误?

我认为不能使用对象文字将变量名用作对象的属性名。以下是一种可能的解决方法:

function gridClick(a, b) {
    var params = {};
    params[a] = 0;
    params[b] = 0;
    $(c).animate(params, 10000);
};

如果要使用变量作为属性名称,则需要使用括号表示法和赋值。文字语法不支持它

相反,请使用:

function gridClick(a, b, c) {
    var opts = {};
    opts[a] = 0;
    opts[b] = 0;
    $(c).animate(opts, 10000)
}

和的可能重复。
c
是函数的第三个参数吗?是的,但c与此问题无关。OP缺少第三个参数(c),您也缺少:)
c
可以是全局的,可以在外部范围内定义,等等。我怀疑这是因为
gridClick('top','left',this)。。但是你说的可能是真的。。顺便说一句,我没有回答你的问题,因为那根本与问题无关。这很有效。有没有办法给动画添加其他属性?例如.animate(params{height:100},1000)?为了与设置
a
b
的行保持一致,您可以添加
params[“height”]=100--或--
参数高度=100。另一个是初始化对象,如
var params={height:100}
Hmm
params
来自哪里:)