Javascript 确定哪一级i';JSON树中的m
我可能有个简单的问题,但我想不出来。如果我有一个多教派的JSON数组,如下所示:Javascript 确定哪一级i';JSON树中的m,javascript,jquery,html,json,Javascript,Jquery,Html,Json,我可能有个简单的问题,但我想不出来。如果我有一个多教派的JSON数组,如下所示: [ { "name":"one", "children": [ { "name":"two", "children": [ { "name":"two",
[
{
"name":"one",
"children":
[
{
"name":"two",
"children":
[
{
"name":"two",
"children": []
},
...
]
},
...
]
}
]
我想确定我的水平。如果我要循环所有第一个实体,将打印的内容如下:
one -|
two -> View Children
单击“查看子项”
”后:
one -|
two -|
three -> View Children || Go Back.
如果单击“返回
”,我们将返回:
one -|
two -> View Children
所以它类似于层次结构。我想不出怎么让后退按钮工作。我能够利用这种代码的和平性来找出前进的方向:
level = obj; // OBJ is the json data.
function inside(events){
temp = "";
for (i in events) {
temp += "<li id='"+events[i].id+"' class='"+events[i].type+"' index='"+i+"''> "+events[i].name+ "</li>";
}
return temp;
}
text += inside(obj);
$('#filebrowser').on('click','li.folder',function(e){
var index = $(this).attr('index');
var html = "<li class='folder back' index='"+index+"'>back</li>";
if(level[index].children){
html = html + inside(level.[index].children);
level = level[index].children;
}
$('#filebrowser').html(html);
e.stopPropagation();
});
level=obj;//OBJ是json数据。
内部功能(事件){
温度=”;
对于(事件中的i){
temp+=“通常用于跟踪导航历史记录等内容。大多数编程语言都包含某种堆栈结构的实现。在Javascript中,堆栈功能内置于中。请查看和方法
向前导航时,您可以将最后一页推到历史堆栈上。按下后退按钮时,您可以按照添加条目的相同顺序关闭条目,直到到达第一个条目
它可能看起来像这样:
var backStack = [];
$('#filebrowser').on('click','li.folder',function(e){
var index = $(this).attr('index');
var html = "<li class='folder back' index='"+index+"'>back</li>";
if(level[index].children){
html = html + inside(level.[index].children);
level = level[index].children;
}
backStack.push($('#filebrowser').html);
$('#filebrowser').html(html);
e.stopPropagation();
});
或者类似的东西。也许从错误的角度来处理这个问题,可能会在一开始就创建所有html,然后通过操纵DOM来操纵子对象的可见性。一个演示将有助于展示更多关于您的更高级别目标领域的信息,一个术语的诡辩:-您的数据可能已经作为JSON,但您在代码中使用的变量引用的是数组或对象,而不是JSON。fiddle/jsBin会非常有用。不,她不是在说浏览器的BACK
按钮:)back
看到了吗?我也不是说浏览器的back按钮。我是说通过使用数组
来跟踪您所处的层次结构的哪个级别。在这种情况下,charlietfl的注释是一种更好的方法。这看起来真的是我要找的,您能在示例中对此稍加限制吗?”?
$('#filebrowser').html(backStack.pop());