2 回答

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>

TA貢獻1856條經驗 獲得超11個贊
您可以使用如下循環:
for (key in data.values) { output += '<option>' + data.values[key] + '</option>'; }
示例: https: //jsfiddle.net/commanddotcom/j7f4y0kw/2/
- 2 回答
- 0 關注
- 148 瀏覽
添加回答
舉報