2012-09-13 113 views
0

基本的Javascript/jQuery問題:如何在鍵/值對中使用nonliteral作爲鍵?我認爲下面的語法會解析,但它不會。我正在嘗試創建一個動態的對話框。我希望按鈕文本是可變的。我怎麼能用Javascript/jQuery做到這一點?或者我必須在我的.js文件上調用PHP? (所以不想這麼做......)我可以在Javascript/jQuery中使用變量作爲鍵嗎?

function see_menu_custom(t1, m1, t2, m2, t3, m3, t4, m4, t5, m5) 
{ 
    $(document).simpledialog2(
    { 
     mode: 'button', 
     headerText: 'Send Message', 
     headerClose: true, 
     showModal: true, 
     animate: false, 
     buttons : 
     { 
      t1: /******** How can I make this a nonliteral? *********/ 
      { 
       click: function() { 
        sendMessage(username, token, t1, m1); 
       }, 
       iconpos : "right", 
       icon : "arrow-r", 
       theme : "e" 
      }, 
... 

回答

1

括號標記是正確的答案,但你似乎是問如何也要通過它,像這樣構造

function see_menu_custom(t1, m1, t2, m2, t3, m3, t4, m4, t5, m5) 
{ 
    var myButtons = {}; 
    myButtons[t1] = { 
     click: function() { 
      sendMessage(username, token, t1, m1); 
     }, 
     iconpos : "right", 
     icon : "arrow-r", 
     theme : "e" 
    }; 
    // rest of buttons 
    ... 
    // then pass into next step 
    $(document).simpledialog2(
    { 
     mode: 'button', 
     headerText: 'Send Message', 
     headerClose: true, 
     showModal: true, 
     animate: false, 
     buttons : myButtons, // here 
... 
+0

謝謝!這工作! – Doug

1

使用bracket notation

buttons[var] = {}; 
+0

我到底該如何在我的代碼中使用它?喜歡這個? '... animate:false, buttons [t1]:{ click:function(){ sendMessage(username,token,t1,m1); }, iconpos: 「右」, 圖標: 「箭頭-R」, 主題: 「E」 },按鈕[T2] ...' – Doug

0

只能使用字符串對象的文字,使用表達式,您必須使用方括號和分配:

buttons[expression] = value; 
+0

我會怎麼做這在我的例子嗎? jQuery的東西扔了我。 – Doug

0

正如其他人所指出的那樣,你不能做到這一點與文本對象符號。

不過,我想用的標題關鍵是把按鈕陣列相比,不太自然的表示:

function see_menu_custom(t1, m1, t2, m2, t3, m3, t4, m4, t5, m5) 
{ 
    $(document).simpledialog2(
    { 
     mode: 'button', 
     ... 
     buttons : 
     [ 
      { 
       label: 'My arbitrary string value', 
       click: function() { 
        sendMessage(username, token, t1, m1); 
       }, 
       ... 
       theme : "e" 
      }, 
     ] 
相關問題