Jquery css()赢了';t以编程方式设置多个属性

Jquery css()赢了';t以编程方式设置多个属性,jquery,css,Jquery,Css,这项工作: var property1 = "width"; $('.button1').on("click", function(){ $('.greenbox').css(property1, "200px"); }); 但这并不是: var property1 = "width"; var property2 = "border-top"; $('.button2').on("click", function(){ $('.greenbox').css({

这项工作:

var property1 = "width";

$('.button1').on("click", function(){
    $('.greenbox').css(property1, "200px");
});
但这并不是:

var property1 = "width";
var property2 = "border-top";

$('.button2').on("click", function(){
    $('.greenbox').css({
        property1: "50px",
        property2: "50px"
    });
});
为什么??最简单、最快、最圆滑的是什么。设置多个(未知)属性的未知数量的最跨浏览器方法?我知道这些值,只是不知道它们的属性。:)


在Javascript中构造对象时,只能将键定义为字符串。。这意味着将不会传递
property1
property2
中的值。。而是传递字符串“property1”和“property2”

要克服此问题,请在advanced中创建对象,然后将其整体传递:()

编辑:

我在文档中找不到支持我的信息,但情况如下:

当您使用以下表示法:
{key1:value1,key2:value2}
javascript将键解析为名称,即使存在定义为相同名称的变量,javascript也不会传递值,而只传递名称-这就是它的构建方式-键不能作为变量传递


使用
cssObj[peroperty1]
是有效的,因为我们基本上将对象视为一个关联数组,这样就允许将键指定为变量。

在Javascript中,构造对象时,只能将键定义为字符串。。这意味着将不会传递
property1
property2
中的值。。而是传递字符串“property1”和“property2”

要克服此问题,请在advanced中创建对象,然后将其整体传递:()

编辑:

我在文档中找不到支持我的信息,但情况如下:

当您使用以下表示法:
{key1:value1,key2:value2}
javascript将键解析为名称,即使存在定义为相同名称的变量,javascript也不会传递值,而只传递名称-这就是它的构建方式-键不能作为变量传递


使用
cssObj[peroperty1]
是有效的,因为我们基本上将对象视为一个关联数组,这样就允许将键指定为变量。

您正在创建一个以文字值“property1”为键的对象。如果您想采用您正在尝试的方法,请尝试以下方法:

var property1 = "width";
var property2 = "border-top";

var styles = {};
styles[property1] = "50px";
styles[property2] = "50px";

$('.button2').on("click", function(){
    $('.greenbox').css(styles);
});

您正在创建一个以文字值“property1”为键的对象。如果您想采用您正在尝试的方法,请尝试以下方法:

var property1 = "width";
var property2 = "border-top";

var styles = {};
styles[property1] = "50px";
styles[property2] = "50px";

$('.button2').on("click", function(){
    $('.greenbox').css(styles);
});

问题是没有正确指定属性名称。当您说
property1:'50px'
时,实际上是将名为“property1”的属性设置为50px


问题在于您没有正确指定属性名称。当您说
property1:'50px'
时,实际上是将名为“property1”的属性设置为50px


它不起作用的原因是您正在设置传递的对象的
属性1
属性2
,而不是
属性1
属性2
等的实际值。JavaScript就是这样解释对象的

解决这个问题的一个方法是只使用数组

var properties = ['width', 'border-top'];

$('.button2').on('click', function() {
    for(var i = 0; i < properties.length; i++)
        $('.greenbox').css(properties[i], '50px');
});
var属性=['width','border top'];
$('.button2')。在('click',function()上{
对于(var i=0;i
它不起作用的原因是您正在设置传递的对象的
属性1
属性2
,而不是
属性1
属性2
等的实际值。JavaScript就是这样解释对象的

解决这个问题的一个方法是只使用数组

var properties = ['width', 'border-top'];

$('.button2').on('click', function() {
    for(var i = 0; i < properties.length; i++)
        $('.greenbox').css(properties[i], '50px');
});
var属性=['width','border top'];
$('.button2')。在('click',function()上{
对于(var i=0;i
您的语法错误。使您的代码正常工作

cssObj.css("property1", "50px").css("property2", "50px")

上面的一些答案可能会让你更优雅地完成你想做的事情

您的语法错误。使您的代码正常工作

cssObj.css("property1", "50px").css("property2", "50px")

上面的一些答案可能会让你更优雅地完成你想做的事情

按照为对象的“值”定义键的方式。键本身不能是变量

为此,您需要以下符号:

var obj[variable]='value';
做我在这里做的事…

您需要这样做:

var props={};
    props[property1]= "50px";
    props[property2]= "50px";

按照为对象的“值”键定义键的方式。键本身不能是变量

为此,您需要以下符号:

var obj[variable]='value';
做我在这里做的事…

您需要这样做:

var props={};
    props[property1]= "50px";
    props[property2]= "50px";

谢谢这里有一些基本的东西我正试图抓住。为什么在函数调用中创建对象时,键不引用变量,只引用它们自己,但在外部创建对象然后传入时,变量引用传入?谢谢。这里有一些基本的东西我正试图抓住。为什么在函数调用中创建对象时,键不引用变量,而只引用它们自己,但是当对象在外部创建并传入时,变量引用就会传入?是的,我想是这样一个:)实际上,这对引号中的属性也不起作用。太匆忙了-属性1和属性2是可变的啊,我想是:)事实上,这对引号中的属性也不起作用。太多匆忙-属性1和属性2是变量