【问题标题】:How to fix json code coming into html dropdown as object Object如何修复作为对象对象进入html下拉列表的json代码
【发布时间】:2020-01-12 17:49:27
【问题描述】:

我有一个 InDesign 脚本的 HTML 下拉列表,当我将 JSON 从文件中拉入时,它会以对象 Object 的形式返回。我无法弄清楚我做错了什么。

我在这里尝试了很多答案,但没有一个可以使用我的代码。

我的 HTML:

<h4>Design Tools</h4>

    <select id="swatchNumber" onchange="swatchIndex()" class="custom-select"></select>

我的 jsx:

function swatchIndex() {  
    var doc, swatches, json, n, l, swatch;  
    doc = app.activeDocument;  
    swatches = doc.swatches;  
    json = [];  
    l = swatches.length;  
    for (n = 0; n < l; n++) {  
        swatch = swatches[n];  
        json[n] = '"' + n + '": {' +  
            '"name": "' + swatch.name + '"}' 
    }  
    // prepare the JSON as a string  
    json = '{' + json.join(',') + '}';  
    return json;  
}

我的javascript:

var callBack = function (result) {
    try {
        var swatchesConv = JSON.parse(result);

        var select = document.createElement('SELECT');
        select.name="swatchNumber";
        select.id="swatchNumber";
        document.body.appendChild(select);

        Object.keys(swatchesConv).forEach(function(result){
        document.getElementById('swatchNumber').innerHTML +='<option value="'+result+'">'+swatchesConv[result]+'</option>'
        })

        alert(result);

    } catch (e) { alert(e.message); }
//         alert("Wrong");
}
csInterface.evalScript('swatchIndex()', callBack);

弹出到我的警报中的实际 JSON(结果): {“0”:{“名称”:“无”},“1”:{“名称”:“注册”),“2”:{“名称”:“论文”},“3”:{“名称” ”: “黑色”}}

当我加载应用程序时,我收到弹出 JSON 的警报,但下拉列表显示正确的数量,但每个索引只显示对象对象

【问题讨论】:

    标签: javascript object select dropdown option


    【解决方案1】:

    因为swatchesConv

    {
     “0”: {“name”: “None”}, 
     “1”: {“name”: “Registration”), 
     “2”: {“name”: “Paper”}, 
     “3”: {“name”: “Black”}
    }
    

    Object.keys(swatchesConv).forEach 中的 result 将是键,但 swatchesConv[result] 的值将是键的对象。因此,对于密钥 0,它将是 {“name”: “None”}

    要显示名称,您必须使用:

    '<option value="'+result+'">'+swatchesConv[result].name+'</option>'
    

    '<option value="'+result+'">'+swatchesConv[result]['name']+'</option>'
    

    在创建选择的选项时。

    【讨论】:

    • 非常感谢! [name] 不起作用,但 [result].name 起作用了!我需要找时间学习 json 以及如何解析!谢谢你的一切!
    • 修正了错字。
    猜你喜欢
    • 2013-05-02
    • 2017-05-06
    • 2023-04-08
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 2015-11-30
    • 2017-08-19
    相关资源
    最近更新 更多