【发布时间】:2019-05-20 10:43:51
【问题描述】:
我有一个像这样的多维对象数组。
var categories = [{
text: "engine",
children: [1,2,3, {
text: "piston",
children: [4,5,6]
}]
}, {
text: "tire",
children: [7,8,9]
}];
每当类别数组的索引等于一个数组时,都必须有一个下拉菜单,其中包含数组的内容,并且可以无穷无尽。如果数组的索引不等于数组,它应该只是一个 a 标签。
我正在尝试实现这样的目标:
我已尝试更改下面的代码以使其适合我的需要,我结合了 html 和 css 中的自制下拉菜单来执行此操作,但此时它不再有意义。
function menuToElement(menu) {
const ul = document.createElement("ul");
for (const item of menu) {
const li = document.createElement("li");
if (Object(item) === item) {
li.textContent = item.text;
li.appendChild(menuToElement(item.children));
} else {
li.textContent = item;
}
ul.appendChild(li);
}
return ul;
}
const ul = menuToElement(categories);
document.getElementById("menu").appendChild(ul);
我得到的结果是我只能显示名称引擎和轮胎,但无法让其中的孩子们工作的下拉菜单。我想问的是是否有人可以解释上面的代码究竟做了什么,以及我是否以正确的方式处理这个问题。
这就是我尝试使下拉菜单不再完全正常工作的方式,因为我试图使用其他代码使其附加。
<div class="popup" onclick="togglePopup2()">
<div class="sel popuptext" id="myPopup2">
<div class='txt'>Select</div>
<div id="Select" class="options hide">
<div>Option 1</div>
<div>Option 2</div>
<div>Option 3</div>
</div>
</div>
<img src="~/images/circle.png" class="category" id="1">
</div>
var txt = $('.txt'),
options = $('.options');
txt.click(function (e) {
e.stopPropagation();
var content = $(e.target).text();
console.log(content);
$('#'+ content).show();
});
$('body').click(function (e) {
options.hide();
});
}
【问题讨论】:
-
你能贴出自制的下拉代码吗?
-
下拉代码现在在问题中。
标签: javascript html arrays multidimensional-array