2012-02-09 78 views
0

所以,我有一個按鈕,它的值是變量和字符串連接起來:jQuery的:可變字符串替代(串聯)按鈕值

$('#btn1').attr('value','question'+currid+'ans1').button('refresh'); 

這將返回類似question5ans1,例如。現在,在JavaScript的文檔的頂部,此值存在與相關聯的,像這樣的字符串的變量:

var question5ans1 = "Sydney"; 

的問題是,該按鈕顯示「question5ans1」而不是「悉尼」。有什麼方法可以修復/改變它嗎?

回答

3

使用eval來評估字符串爲var。

$('#btn1').attr('value', eval('question'+currid+'ans1')).button('refresh'); 

相反的eval,較好的解決方案是有這樣的變種在像下方的對象,

var questions = {'question5ans1' : 'Sydney' }; 

和功能,

$('#btn1').attr('value', questions['question'+currid+'ans1']).button('refresh'); 
+0

這可能會更好地將question5ans1的東西存儲在一個JSON對象。這樣你就不需要做'eval',相比之下,這是一個相當繁重的過程。 – twilson 2012-02-09 22:34:46

+0

同意和更新使用對象的答案。 – 2012-02-09 22:37:32

0

如果變量是在全球範圍內,你可以像這樣取得它:

$("#btn1").val(window['question' + currid + 'ans1']); 
+0

爲什麼downvote? – Blender 2012-02-09 23:33:14

0

您應該將這些類型的變量附加到對象上,因爲您無法直接將字符串轉換爲變量名稱。應該不需要使用eval

var q = { 
    question3ans1: "London", 
    question4ans1: "Tokyo", 
    question5ans1: "Sydney" 
}; 

$('#btn1').attr('value', q['question' + currid + 'ans1']).button('refresh');