2017-05-22 45 views
0

我的問題很簡單:串聯名變量(不是值)的js

我想在一個功能來連接一個動態的變量名,所以名爲插入參數,當我打電話的功能,她CONCAT自動字符串中的新變量名稱。

爲例(錯了,我認爲):

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

您將能夠使用字符串作爲變量名的唯一方法是將其作爲另一個對象的屬性。如果你想要變量全局,你可以使用窗口對象。

window['block' + insertName + 'DT'] = document.createElement('dt'); 

說,你真的不應該需要,應該尋找其他方式來構建你的代碼。

+0

Thanks @dgeare,現在我可以使用blockFirstDT以外的函數了嗎? – Kys3r

+0

@ Kys3r窗口對象上定義的任何東西都將是一個全局屬性。所以你可以從應用程序的任何地方以相同的方式訪問它。 window.blockFirstDT和window [「blockFirstDT」]都是訪問該值的正確方法。 – dgeare