0

基本的なJavascript/jQueryの質問:キーと値のペアのキーに非リテラルを使用するにはどうすればよいですか?次の構文(以下)は解析できると思いましたが、そうではありません。動的なダイアログを作成しようとしています。ボタンのテキストを可変にしたい。Javascript / jQueryでこれを行うにはどうすればよいですか?または、.jsファイルでPHPを呼び出す必要がありますか?(だから、これをしたくない...)

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"
            },
...
4

4 に答える 4

1

角かっこ表記を使用します。

buttons[var] = {};
于 2012-09-13T00:17:54.347 に答える
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
...
于 2012-09-13T01:00:15.513 に答える
0

オブジェクトリテラルには文字列のみを使用できます。式を使用するには、角かっこと割り当てを使用する必要があります。

buttons[expression] = value;
于 2012-09-13T00:19:25.767 に答える
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"
            },
        ]
于 2012-09-13T00:53:27.150 に答える