簡體   English   中英

使用Jquery在click事件上將新Property附加到現有JSON對象

[英]Append new Property to existing JSON object on click event using Jquery

我正在嘗試將輸入字段中的值附加到一個現存的JSON對象中,並且不斷收到錯誤消息。

這是我的代碼:

$('#addObjectBtn').click(function() {
            //Inject Property into current object
            var newObjName = $('#newObjectName').val();
            var newObjType = $('#newObjectType').val();
            objStr.View[newObjType + "_100"] = {"BackgroundImage":'""' + newObjName + '""'};
            $('#newObjectPrompt').dialog('close');
        })

編輯:添加JSON對象。 我試圖添加例如另一個按鈕。 在我的示例中為“ Button_100”

{
    "View": {
        "Name": "Untitled3",
        "ImportWidth": 320,
        "ImportHeight": 480,
        "Image_1": {
            "BackgroundImage": "Image.png",
            "Position": [0, 0],
            "Width": 320,
            "Height": 480
        },
        "Button_1": {
            "BackgroundImage": "ButtonTop.png",
            "Position": [61, 83],
            "Width": 217,
            "Height": 58
        },
        "Button_2": {
            "BackgroundImage": "ButtonBottom.png",
            "Position": [81, 114],
            "Width": 205,
            "Height": 73
        },
        "TextField_1": {
            "BackgroundImage": "TextFieldLogin.png",
            "Position": [102, 336],
            "Width": 189,
            "Height": 31
        },
        "Label_1": {
            "Position": [137, 100],
            "Width": 54,
            "Height": 20,
            "Text": "HiRob",
            "FontSize": 18,
            "Color": [0, 0, 0, 1]
        },
        "Label_2": {
            "Position": [43, 342],
            "Width": 72,
            "Height": 20,
            "Text": "LogOut:",
            "FontSize": 18,
            "Color": [0, 0, 0, 1]
        },
        "Label_3": {
            "Position": [115, 234],
            "Width": 126,
            "Height": 20,
            "Text": "AnotherButton",
            "FontSize": 18,
            "Color": [0, 0, 0, 1]
        }
    }
}

newObjType已經是一個字符串,您不需要所有這些引號。 嘗試這樣:

objStr.View[newObjName + "_100"] = {BackgroundImage: newObjType};

嘗試

objStr.View[newObjName + "_100"] = JQuery.phraseJSON('{"BackgroundImage":"' + newObjType +'"}');

使用短語JSON有點麻煩,但是一定會完成工作,它將JSON字符串轉換為JS對象。

編輯:newObjType已經是一個字符串

另外,如果沒有JQuery,則可以使用JSON.parse(string)。

更新

在手機上沒有調試工具的情況下,我建議使用WEINRE 它為桌面中的應用程序提供了相同的控制台和其他功能

另外,查看您的評論,似乎錯誤在其他地方。 您可以選擇嘗試這種分配方式

var newObjName = $('#newObjectName').val();
var newObjType = $('#newObjectType').val();
var tempObj = {"BackgroundImage": newObjName };
objStr.View[newObjType + "_100"] = tempObj;

老答案

我想錯誤是SyntaxError: Unexpected token :
我想這是由{"BackgroundImage":'""' + newObjName + '""'};
而且您在代碼中設置屬性的方式也是錯誤的

作為更正,我認為您需要進行2次更改

從以下位置更改代碼:

{"BackgroundImage":'""' + newObjName + '""'}

{ BackgroundImage : newObjName }

很酷,不是嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM