1

私の必要性は、json で記述された条件でボタンを生成することです。助けてください、私は初心者で、行き詰まっています。問題は、私のコードがテキスト「未定義」のボタンを生成し、ボタンをクリックしても何も起こらないことです。

これが私のJSONコードです(http://www.jsoneditoronline.org/でのチェック結果により有効ですが、以下のhtmlコードでは機能しません):

    {
        "Caption": "Module caption",
        "IconsDirectory": "C://Images/",
        "Buttons": [
            {
                "Conditions": [
                    {
                        "ConditionText": "1 == 1",
                        "ButtonText": "Text1",
                        "Visible": true,
                        "Colors": {
                            "FontColor": "#FFFFFF",
                            "BGColor": "#669933"
                        },
                        "BButtonText": {
                            "TText": "Textt1"
                            },
                        "Size": {
                            "Width": 200,
                            "Height": 50
                        },
                        "Icon": {
                            "FileName": "Smile.png",
                            "Width": 16,
                            "Height": 16
                        },
                        "Url": {
                            "UrlAddress": "http://www.google.com",
                            "OpenNewWindow": true
                        },
                        "JavaScriptAction": {
                            "Text": "alert('ok');"
                        }
                    },
                    {
                        "ConditionText": "2 == 2",
                        "ButtonText": "Text2",
                        "Visible": true,
                        "Colors": {
                            "FontColor": "#0FFFFF",
                            "BGColor": "#FF9966"
                        },
                        "BButtonText": {
                            "TText": "Textt1"
                            },
                        "Size": {
                            "Width": 200,
                            "Height": 50
                        },
                        "Icon": {
                            "FileName": "Smile.png",
                            "Width": 16,
                            "Height": 16
                        },
                        "Url": {
                            "UrlAddress": "http://www.google.com",
                            "OpenNewWindow": true
                        },
                        "JavaScriptAction": {
                            "Text": "alert('ok');"
                        }
                    }
                ]
            }
        ]
    }

html コード:

    <html>
    <head>
    <title>SMButtons</title>
    <script src="jquery/jquery-1.4.2.js"></script>
    <script type="text/javascript">         
    //When document loaded.
    $(document).ready(function(){   
    // Get data from file as JSON
                $.getJSON('weekendtask.json', function(data) {
            //var buttons = data.Buttons;
               //$.each(buttons, function(key, val)
               //{  
                //$('<li><input type="button" onClick="'+         val.Conditions[0].JavaScriptAction +'" value="'+ val.Conditions[0].ButtonText +'"/>        </li>').appendTo('#ulObj');
                //$('<li><input type="button" value="'+         val.Conditions[1].BButtonText.TText +'"/></li>').appendTo('#ulObj');
    var res=""
    $.each(data.Buttons, function(key, button){
        $.each(button.Conditions,function(key,condition){
        //  console.log(condition)
            res+="<li>"
            res+='<input type="button"' + 
                //'" value="'+ '"Ttt"' +
                '" value="'+ condition.ButtonText +
                //'" value="'+ data.Buttons.Conditions.ButtonText +
                '" onclick="' + condition.JavascriptAction +
                '" style="background-color:'+condition.Colors.BGColor+'         color:'+condition.Colors.FontColor+
                '"/>'
            res+="<\/li><\/br><\/br>test<\/br>"
        })
    })
    $(res).appendTo('#ulObj')

               //});
       });             
         });

    window.onload = function(){ alert("welcome"); }

       </script>
    </head>
    <body bgcolor="silver">
    <br>
    <br>
    <div>
    <ul id='ulObj'>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    </ul>
    </div>
    </body>
    </html>
4

1 に答える 1

1

onClickハンドラは である必要がありますcondition.JavaScriptAction.Text。残りはすべて正常に機能していました。

var res = ""
    $.each(data.Buttons, function(key, button) {
        $.each(button.Conditions, function(key, condition) {
            res += "<li>"
            res += '<input type="button"' + '" value="' + condition.ButtonText + '" onclick="' + condition.JavaScriptAction.Text + '" style="background-color:' + condition.Colors.BGColor + '         color:' + condition.Colors.FontColor + '"/>'
            res += "<\/li><\/br><\/br>test<\/br>"
        })
    })
    $(res).appendTo('#ulObj')

http://jsfiddle.net/x8Ysd/

于 2012-11-18T21:36:20.013 に答える