0

これらのフォーラムは素晴らしく、私が助けてくれた寄稿者は本当に才能があります。そのため、自分の問題を解決できないときや、プログラミングの概念を理解していないときはいつでも戻ってきます。これは確かに後者の 1 つです !

これまでに受けた支援により、エンド ユーザーが一連のチェックボックスをクリックし、いくつかのテキスト フィールドにデータを入力する複雑なフォームを開発することができました。これらのアクションの結果、前述のアクションに基づいて、いくつかのテキスト ボックスにさまざまなテキストが入力されます。

テキストエリアに入力されるテキストは、各チェックボックスによっていくつかのオブジェクト リテラル内で参照されます。これは問題なく機能し、サイトは非常に便利です。

私のオブジェクト リテラルには、'値' がテキストの文字列である名前:値のペアがあります。いくつかの名前と値のペアに変数を含めようとしましたが、成功しませんでした。変数が定義されていないか、ページの読み込み時に「null」値を持つため、これは常にスクリプトを壊します。

例えば、

それ以外の

    var example = {
var1:'some string',
var2:'some other string'
  }

私は試した、

var somevariable = document.getElementById('someId');
var example = {
var1: 'some string' + somevariable + 'some other bit',
var2: 'some other string'
}

私の質問は、スクリプトの他の場所で参照されている変数を含めることを、オブジェクト リテラルの名前:値のペアに組み込むことができるかどうかです。

参考までに (スクリプトがかなり長いため)、私のサイトはhttp://www.hematogones.com/bmbiopsies.htmlです。

4

2 に答える 2

0

短い答えはイエスです。これが実際の例です:

var myStr = "world";
var obj = { var1: "hello " + myStr };
console.log(obj.var1); // Outputs: hello world

コメントで述べたように、特定の例にはいくつかの構文エラーがあるため、おそらくそれらを修正するだけで問題が修正されます。

于 2013-01-17T03:47:53.467 に答える
0

オブジェクト リテラルの秘訣は、すぐに評価されることです。得られる値を遅らせる「簡単な」方法はありません。

var x = "Alice";
var obj = { greeting: "Hello, " + x + "." };
console.log(obj.greeting);  // "Hello, Alice."
x = "Bob";
console.log(obj.greeting);  // "Hello, Alice."
obj = { greeting: "Hello, " + x + "." };
console.log(obj.greeting);  // "Hello, Bob."

後で戻ってくる何か:

後で定義する文字列リテラルに変数を挿入する必要がある場合は、インライン関数を作成できます。このようにobj.greeting、単純な文字列ではなく、呼び出す関数です (のようになりますobj.greeting())。これは、オブジェクトを宣言するときに文字列値が計算されるのではなく、関数を呼び出すときに宣言されることを意味します。これは「クロージャー」と呼ばれる Javascript の非常に強力な機能であり、クロージャーによって得られる予想される動作と予想外の動作について 1 日中学習することができます。

var x = "Alice";
var obj = { greeting: function() { return "Hello, " + x + "." }};
console.log(obj.greeting());  // "Hello, Alice."
x = "Bob";
console.log(obj.greeting());  // "Hello, Bob."
于 2013-01-17T03:49:44.990 に答える