Javascript 确定哪一级i';JSON树中的m

Javascript 确定哪一级i';JSON树中的m,javascript,jquery,html,json,Javascript,Jquery,Html,Json,我可能有个简单的问题,但我想不出来。如果我有一个多教派的JSON数组,如下所示: [ { "name":"one", "children": [ { "name":"two", "children": [ { "name":"two",

我可能有个简单的问题,但我想不出来。如果我有一个多教派的JSON数组,如下所示:

[
    {
        "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+"''>&nbsp;&nbsp;"+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());