0

私は 18 x 9 のグリッドを作成しており、グリッドに配置できるすべてのボックスのサイズを計算したいと考えています。

それらをオブジェクトに配置していますが、ライン

var template_sizes_site[x + 'x' + y] = {};

失敗しています。変数と文字列を使用してキーに名前を付けることはできないようですか?

基本的に言いたいことarray['2x9']['width'] = 42;など

私は何が欠けていますか?

var template_sizes = {};
var site_width = 70;
var site_height = 70;
var site_margin = 20;

for (var y = 1; y <= 9; y++)
{ 
for (var x = 1; x <= 18; x++)
    {
        var template_sizes_site[x + 'x' + y] = {};
        template_sizes_site[x + 'x' + y]['width'] = ((site_width * x) + (x > 1 ? site_margin * (x - 1) : 0));
        template_sizes_site[x + 'x' + y]['height'] = ((site_height * y) + (y > 1 ? site_margin * (y - 1) : 0));
    }
}
4

3 に答える 3

3

ネストされた for ループの本体の最初の行から を削除しvarます。

var template_sizes = {};
var site_width = 70;
var site_height = 70;
var site_margin = 20;

for (var y = 1; y <= 9; y++)
{ 
    for (var x = 1; x <= 18; x++)
    {   
        template_sizes_site[x + 'x' + y] = {};
        template_sizes_site[x + 'x' + y]['width'] = ((site_width * x) + (x > 1 ? site_margin * (x - 1) : 0));
        template_sizes_site[x + 'x' + y]['height'] = ((site_height * y) + (y > 1 ? site_margin * (y - 1) : 0));
    }
}

varプロパティではなく、変数専用です。

var template = {}; // OK
var template_sizes_site[x + 'x' + y] = {}; // not allowed, no need

template_sizes_siteまた、タイプミスでない場合は初期化する必要があります。

于 2013-10-18T09:47:01.380 に答える