Javascript多维数组表单html列表
我真的被一个大问题弄疯了。。。。 我有一个html列表,如:Javascript多维数组表单html列表,javascript,jquery,html,arrays,Javascript,Jquery,Html,Arrays,我真的被一个大问题弄疯了。。。。 我有一个html列表,如: <ul> <li> <span>Fiat</span> <ul> <li>Punto</li> <li>Croma</li> </ul> </li> <li> <span>Ford</span>
<ul>
<li>
<span>Fiat</span>
<ul>
<li>Punto</li>
<li>Croma</li>
</ul>
</li>
<li>
<span>Ford</span>
<ul>
<li>Focus</li>
<li>Fiesta</li>
<li>bla bla...</li>
</ul>
</li>
</ul>
-
法令
- 平托
- 克罗马
-
河流浅水处
- 焦点
- 嘉年华
- 布拉布拉
(如有必要,我可以更改html,但这将是列表的总体思路)
现在。。。我需要使用javascript提示将数据放入两个文本框中,这样谁会键入几个字母,谁就会拥有列表
主要的问题是转换javascript数组中的列表,这样我就可以根据之前选择的品牌更新第二个文本框。。。
使用多维数组是个好主意吗?
有人能给我把嵌套列表转换成多维数组的代码吗?
解决这个问题的更好方法
提前感谢:)我推荐这种结构:
[
{ brand: "Fiat", models: ["Punto", "Croma"] },
{ brand: "Ford", models: ["Focus", "Fiesta"] }
]
要从html构建它,可以执行以下操作:
var arr = [];
$("#main>li").each(function() {
var elem = {
brand: $(this).find(">span:first").text(),
models: []
};
$(this).find(">ul>li").each(function() {
elem.models.push($(this).text());
});
arr.push(elem);
});
您只需将id添加到第一个ul
另一个可能很好的选项(您应该根据使用方式选择):
守则:
var objs = {};
$("#main>li").each(function() {
var brand = $(this).find(">span:first").text();
objs[brand] = [];
$(this).find(">ul>li").each(function() {
objs[brand].push($(this).text());
});
});
如果您创建了多维数组或对象,然后从数组中创建列表和文本框,而不是从一个列表到另一个数组再到文本框,那会怎么样?不,我不会使用多维数组。这会使代码很难阅读,因为数组维度不是自解释的,而且它们的含义彼此非常不同。要将列表值放入数组,只需执行以下操作:
var listValues=$(“ul li”).map(函数(){return$(this.text();}).get()
@depperm我从代码后面创建那个列表(我从外部数据库访问那个列表),我真的不想把代码后面的数据解析成javascript。。。这让我觉得对可能发生的事情没有安全感,你只能在javascript数组中使用数字作为键。要获得类似于关联数组的东西,您必须使用对象。这正是我真正想要的:)非常完美:)
var objs = {};
$("#main>li").each(function() {
var brand = $(this).find(">span:first").text();
objs[brand] = [];
$(this).find(">ul>li").each(function() {
objs[brand].push($(this).text());
});
});