0

これはおそらく私が習慣にするべきものではないことを理解しています。しかし、Javascript配列プロパティとして格納されている文字列に変数を連結しようとしていました。

たとえば、私は持っています:

var form = {
    'var1' : 'has a value here',
    'array' : [
        [ 'some text', 'some more text' ],
        [ 'second line of text', 'second entry ' + form.var1]
    ]
};
alert( form.array[1][1] );

その結果、「未定義」を表示するアラートが発生します。

代わりにこれを行う場合:

var var1 = 'has a value here';
var form = {
    'array' : [
        [ 'some text', 'some more text' ],
        [ 'second line of text', 'second entry ' + var1 ]
    ]
};
alert( form.array[1][1] );

文字列が定義され、正しく表示されます。

その値を「form」オブジェクトの下に保存しても、希望する結果を得る方法はありますか?私は「いいえ」と推測しています。しかし、私は私が尋ねると思いました。(これはグーグルにとって難しい質問です。:P)

4

3 に答える 3

1

オブジェクトリテラル内でそれを行うことはできませんが(オブジェクト式を終了する前に、formは未定義です)、外部で行うことはできます。

var form = {
    'var1' : 'has a value here',
    'array' : [
        [ 'some text', 'some more text' ],
        [ 'second line of text', 'second entry ']
    ]
};

form.array[1][1] += form.var1;
alert( form.array[1][1] );​
于 2012-09-20T02:56:00.193 に答える
1

あなたはそれを2つの部分で宣言することができます:

var form = {
    'var1' : 'has a value here'
};

form['array'] = [
    [ 'some text', 'some more text' ],
    [ 'second line of text', 'second entry ' + form.var1]
];

alert( form.array[1][1] );
于 2012-09-20T02:56:40.597 に答える
0

私はあなたが警告声明にさえ達することに驚いています。form.var1フォームが定義されていないため、コードがヒットするとすぐに失敗します。これを実現する1つの方法は、それらを個別に定義することです。そのようです

var form = {};
   form.var1 = 'has a value here';
   form.array =   [
      [ 'some text', 'some more text' ],
      [ 'second line of text', 'second entry ' + form.var1]
   ];  
于 2012-09-20T03:03:15.010 に答える