0

2つのjavascriptオブジェクトがあり、1つには現在の値が含まれ、もう1つには置換する必要のある値のキーが含まれています。

var values = {'instance': {'body' : {'background': '000000'}}};

var replace = {'scope':'instance', 'item':'body', 'property': 'background'};

var newValue = 'FFFFFF';

Values[replace.scope][replace.item][replace.property] = newValue;

上記のように「ハードコード」置換することはできますが、多次元オブジェクトの深さが異なる可能性があるため、「置換」オブジェクトのマップ/ループを使用して動的に置換を作成する方法はありますか?

4

1 に答える 1

0

スタイルの変更に関する例が例であると仮定します(そうでない場合は、jQueryを使用してスタイルを変更することをお勧めします)。

あなたができること:

values.instance.body.background = newValue;

したがって、replaceインスタンスがそのまま定義されていて、さらに深くなる可能性がある場合は、この場合、次のようにすることができます。

 var path = "";
 for(i = 0; i < replace.length; i++) {
    path += "." + replace[i];
 }
 eval(path + " = " + "'" + newValue + "'"); 
 //resulting in "values.instance.body.background = newValue" being executed;

乾杯!

于 2012-09-28T11:52:40.137 に答える