2017-05-22 11 views
0

私の問題は簡単です:を連結名変数(値ではなく)のJs

私は関数内で動的変数名を連結したい、私は関数を呼び出す際に、パラメータで名前インサートを持つので、彼女は自動的にCONCAT新しい変数名の文字列。

Exemple(私が思うに、間違った):

function blockDL(insertName){ 

    return var 'block' + insertName + 'DT'= document.createElement('dt'); 

}; 

blockDL('First'); 

私は、コードのリターンを期待する:あなたの助けのための

blockFirstDT = document.createElement('dt'); 

感謝を! =)

+1

なぜそれをしたいですか?可能ではないのに加えて、私はそれをする利点を見ません。あなたはオブジェクトを使用してその値をオブジェクトのプロパティとして保存することができますが、これはユースケースでは不要です。 –

答えて

0

あなたが望むものはありません。できることの選択肢については、"Variable" variables in Javascript?を参照してください。

しかし、 "可変変数"は通常、悪いコード設計の指標です。特にあなたの場合、これらのいずれかを行う理由や利点は絶対にありません。変数にはblockDTparaphDTなどの名前を付けてください。

+0

同じブロックを印刷するのに同じコードを繰り返す必要はないので、これを行う必要がありますが、関数内の変数の名前を変更する必要があります(フランス語です): https://openclassrooms.com/courses/dynamisez -vos-sites-web-avec-javascript/manipuler-le-code-html-partie-2-2#/ id/r-1924713 – Kys3r

+0

悪い習慣で練習する理由はありません – juvian

+0

@ Kys3r:何かが不可能な場合、あなたはそれについて何もできません。 * "私は同じコードを繰り返す必要はありません" *それは何のための関数です。関数を一度定義し、必要なだけ頻繁に呼び出します。関数内の変数名は基本的には無関係です。 –

0

変数名に文字列を使用できる唯一の方法は、別のオブジェクトのプロパティとして配置することです。変数globalを使用するには、windowオブジェクトを使用できます。

あなたが本当にする必要はありません、おそらくあなたのコードを構造化する他の方法を探す必要があり、言っ
window['block' + insertName + 'DT'] = document.createElement('dt'); 

+0

ありがとう@tareare、今、私は関数の外でblockFirstDTを使うことができますか? – Kys3r

+0

@ Kys3rウィンドウオブジェクトに定義されたものはすべてグローバルプロパティになります。アプリケーションのどこからでも同じ方法でアクセスできます。 window.blockFirstDTとwindow ["blockFirstDT"]は両方とも値にアクセスする適切な方法です。 – dgeare

関連する問題