亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 json 數組中的 javascript 在 html 中呈現動態選擇選項

使用 json 數組中的 javascript 在 html 中呈現動態選擇選項

互換的青春 2023-10-30 14:58:39
我有一個這樣的對象var Blocks = {    "name": "Column",    "properties": [        {        "name": "mainAxisAlignment",        "type":"dropDown",        "values":[            "center",            "end",            "spaceAround",            "spaceBetween",            "spaceEvenly",            "start"            ]        },        {        "name": "crossAxisAlignment",            "type":"dropDown",        "values":[            "baseline",            "center",            "end",            "start",            "stretch"            ]        },        {            "name":"direction",            "type": "string"        },        {            "name":"hashCode",            "type": "string"        },        {            "name":"key",            "type": "string"        },        {        "name": "mainAxisSize",                "type":"dropDown",        "values":[            "max",            "min"            ]        },        {            "name":"textBaseline",            "type": "string"        },    ],}我正在嘗試以 html 形式呈現。到目前為止,我能夠獲取標簽和選擇列表,但無法獲取選擇列表中的選項,這是我到目前為止所嘗試的。document.getElementById('test1').innerHTML = `<div><div>${Blocks.name}</div><div id='selection'></div></div>`document.getElementById('selection').innerHTML = Blocks.properties.map(user => {    switch (user.type) {        case 'dropDown':            return propertyDropdown(user)        case 'string':            return propertyString(user)        default:            break;    }}).join('')function propertyString(data) {    return `<div style="margin-left: 18px">                <label>${data.name}: </label>            </div>`};function propertyDropdown(data) {    return `<div style="margin-left: 18px">                <label for="property">${data.name}: </label>                <select id="property">                </select>            </div>`};這是我得到的輸出https://i.stack.imgur.com/EwU6R.png 我不知道如何createOptions在這段代碼中使用函數。
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

您的id屬性將導致錯誤,因為您為每個下拉列表分配相同的ID。在這種情況下,您可以使用name屬性作為 ID。


var Blocks={name:"Column",properties:[{name:"mainAxisAlignment",type:"dropDown",values:["center","end","spaceAround","spaceBetween","spaceEvenly","start"]},{name:"crossAxisAlignment",type:"dropDown",values:["baseline","center","end","start","stretch"]},{name:"direction",type:"string"},{name:"hashCode",type:"string"},{name:"key",type:"string"},{name:"mainAxisSize",type:"dropDown",values:["max","min"]},{name:"textBaseline",type:"string"}]};



document.getElementById('test1').innerHTML = `<div>

<div>${Blocks.name}</div>

<div id='selection'></div>


</div>`


document.getElementById('selection').innerHTML = Blocks.properties.map(user => {

    switch (user.type) {

        case 'dropDown':

            return propertyDropdown(user)

        case 'string':

            return propertyString(user)

        default:

            break;

    }


}).join('')


function propertyString(data) {

    return `<div style="margin-left: 18px">

                <label>${data.name}: </label>

            </div>`

};


function propertyDropdown(data) {

    

    const options = data.values.map(opt => createOptions(opt)).join('')


    return `<div style="margin-left: 18px">

                <label for="${data.name}">${data.name}: </label>

                <select id="${data.name}">

                  ${options}

                </select>

            </div>`

};


function createOptions(option) {

    return `<option value="${option}">${option}</option>`

}

<div id="test1"></div>


查看完整回答
反對 回復 2023-10-30
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

您可以使用如下循環:

for (key in data.values) {
        output += '<option>' + data.values[key] + '</option>';
    }

示例: https: //jsfiddle.net/commanddotcom/j7f4y0kw/2/


查看完整回答
反對 回復 2023-10-30
  • 2 回答
  • 0 關注
  • 148 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號