2

ねえ、私はこれらの2つのコードの違いは何だろうか?最初は機能しますが、2番目は機能しませんか?

First >>
for (i=0; i<$sequencingArray.length; i++){
...
$($sequencingArray[i]).delay(i*100).animate({'margin-left':$masterWidth});
...
}

Second >>
$propToAnimate = 'margin-left';
for (i=0; i<$sequencingArray.length; i++){
...
$($sequencingArray[i]).delay(i*100).animate({$propToAnimate:$masterWidth});
...
}
4

2 に答える 2

6

これは実用的なソリューションです...

$propToAnimate = {'margin-left': $masterWidth};
$($sequencingArray[i]).delay(i*100).animate($propToAnimate);

「オブジェクトリテラル内でプロパティ名として変数を使用することはできません。」ここから

于 2011-06-05T15:57:19.440 に答える
0

オブジェクトを 使用しているとき、{'margin-left':$masterWidth}または作成しているとき。したがって、 Object Initializer()構文{$propToAnimate:$masterWidth}を使用してオブジェクトを作成するときに何をしているのかを知る必要があります。{k0:v0, k1:v1}

var a = {prop:20}あなたの場合に最も重要なことでありvar a = {'prop':20}、どちらもまったく同じことを行います-と呼ばれる1つのプロパティを持つオブジェクトを作成しますprop。すでにvar prop = 'different'他の場所で言っているかどうかは関係ありません。propで使用されると文字通りの名前として扱われ、{prop:20}評価されません。

コードの2番目のバージョンを機能させるためにできることは、a['prop']オブジェクトの構文を利用することです。だから次のようなもの:

var prop = 'margin-left';
var obj = {}; // Create a new object with no propeties
obj[prop] = masterWidth; // Add a new property to obj (using the value of the variable prop as the name of the new property)

次に、がありますobj['margin-left'] == masterWidth。そして、このオブジェクトをアニメーション関数で使用できます...animate(obj);

私はあまり混乱していないことを願っています!

于 2011-06-05T17:12:36.107 に答える