var menuArr = new Array();
menuArr[1] = ["中国", 0];
menuArr[2] = ["美国", 0];
menuArr[3] = ["日本", 0];
menuArr[4] = ["浙江", 1];
menuArr[5] = ["福建", 1];
menuArr[6] = ["东京", 3];
menuArr[7] = ["杭州", 4];
menuArr[8] = ["温州", 4];
menuArr[9] = ["鹿城", 8];
这个结构能换下就最好啦

解决方案 »

  1.   

    类似树的结构,那样操作的时候就不需要便利了。。
    就是
    <script type="text/javascript">
    Array({
    地区 : 河北省,
    Id : 1,
    父级 : null,
    下级 : Array({
    地区 : 秦皇岛市,
    Id : 2,
    父级 : 操作的过程中取上级的那个对象的引用放这里,
    下级 : Array({
    地区 : 海港区,
    Id : 3,
    父级 : 操作的过程中取上级的那个对象的引用放这里,
    下级 : null
    }, {
    地区 : 山海关区,
    Id : 4,
    父级 : 操作的过程中取上级的那个对象的引用放这里,
    下级 : null
    }, {
    地区 : 北戴河区,
    Id : 5,
    父级 : 操作的过程中取上级的那个对象的引用放这里,
    下级 : null
    })
    })
    });
    </script>
      

  2.   

    昂?
    取名称?
    和你那个是一样的。。只不过就是录入数据的时候麻烦一些。。
    取名称只是o.地区 即可啊。
    menuArr[i][0]和这个基本没有区别的啊。
    只不过是
    Array[i].地区嘛。每个显示的select都可以设置一个关联的。
    比如说从最底层的省开始
    它创建的select有个.root 就连接到 对应的o上。
    这样你通过函数传递this然后在去引用下级很方便的就可以找出市,取名字和id直接取就可以嘛。。
      

  3.   

    <script type="text/javascript">
    var json = function (i, n, p) {
    var wc = this;
    wc.id = i;
    wc.name = n;
    wc.parent = p || null;
    wc.nodes = new Array;
    };
    json.prototype.add = function (i, n) {
    var wc = this;
    return wc.nodes[wc.nodes.length] = new json(i, n, wc);
    }var c = new json(1, "河北省"), t = c.add(2, "秦皇岛市");
    t.add(3, "海港区");
    t.add(4, "山海关区");
    t.add(5, "北戴河区");
    window.onload = function () {
    var wc = document.getElementById("wc"), op, i;
    for (i = 0 ; i < c.nodes.length ; i ++) {
    op = document.createElement("option");
    op.root = c.nodes[i];
    op.innerHTML = c.nodes[i].name;
    op.value = c.nodes[i].id;
    wc.appendChild(op);
    }
    };
    </script>
    <select id="wc" onblur="alert(this.value);"></select>
    简单的描述就是这样的。。
    我得去敢东西了。。北。。
      

  4.   

    还不错,不过好象不太好应用哦,后面的数据要根据前面的数据多少来定索引,如果中间临时多了数据,那后面的数据不是全要update,而且这样写期初数据会很烦琐,还要计算下。
      

  5.   

    忽忽,初始化的确是麻烦,不过初始化一次就可以了。。以后把它保存成JSON串直接parse然后使用。。中间插入?
    寒。。
    这个是麻烦。
    如果只是nodes = Array的话的确是要便利arr还有便利option
    不过考虑顺序的话可以加一个Object。。Objcet存储数据,让Array存储引用。。
    第一次便利的时候直接让Option通过Array的引用顺序,引用Object数据。
    这样修改数据的时候只需要用dom操作Option,然后便利Array的引用顺序就可以了。。
      

  6.   

    哈,理解错了。。
    如果要所有的话需要加个Object
    如果只是插入的话用dom的insertBefore和数组的
    var ary = [1, 2, 4, 5];
    ary.splice(2, 1, 3, 4);
    alert(ary);
    就可以啦。
    因为op.root = c.nodes[i];是直接引用的对象。所以,不需要update全部数据。。
    ^o^
      

  7.   

    如果要所有的话需要加个Object
    =
    如果要查询的话需要加个Object- -
      

  8.   

    问题不在数组,而是后面的8要变
    menuArr[9] = ["鹿城", 8];
      

  9.   

    举个例子吧,比如在上面的基础上我要加个印度,按照muxrwc兄弟说的slice之后的数组应该是下面这样的吧,执行中国的子城市都变了
    var menuArr = new Array();
     menuArr[1] = ["中国", 0];
     menuArr[2] = ["美国", 0];
     menuArr[3] = ["日本", 0];
     menuArr[4] = ["印度", 0];
     menuArr[5] = ["浙江", 1];
     menuArr[6] = ["福建", 1];
     menuArr[7] = ["东京", 3];
     menuArr[8] = ["杭州", 4];
     menuArr[9] = ["温州", 4];
     menuArr[10] = ["鹿城", 8];
      

  10.   

    - -寒一个。。
    to hbhbhbhbhb1021我还以为你的那个是说我推荐的方法呢。。
    要是这种的话。menuArr[5] = ["浙江", 1];
    加个子ID的字段。。
    然后搜索对照这找就不会有问题啦
      

  11.   

    menuArr[ID] = [名称, 父ID];
    数据表结构就这里的三个字段
    ID,名称,父ID
    要加一个菜单,就加到后面,不用担心前面的子ID会改变啊,要不然还能用吗??
      

  12.   

    var menuArr = new Array();
     menuArr[1] = ["中国", 0];
     menuArr[2] = ["美国", 0];
     menuArr[3] = ["日本", 0];
     menuArr[4] = ["浙江", 1];
     menuArr[5] = ["福建", 1];
     menuArr[6] = ["东京", 3];
     menuArr[7] = ["杭州", 4];
     menuArr[8] = ["温州", 4];
     menuArr[9] = ["鹿城", 8];
     menuArr[10] = ["印度", 0];