又加了个四级联动的演示:
http://blog.csdn.net/KimSoft/archive/2006/06/14/796743.aspx

解决方案 »

  1.   

    哈、钻石都来啦,拜读过你的代码,其实我这个也怪少的嘛。核心代码只有64行。代码长是因为又用“类”的方式实现了一次。
    function setupCascadeSelect(cascadeSelect, parent, nodes, isOnChange) {
      if (isOnChange == null){
        isOnChange = false;
      }
      cascadeSelect.onchange = function (){
        setupCascadeSelect(this, this.options[this.selectedIndex].value, nodes, true);
      };
      cascadeSelect.getAttr = function (attrName) {
        return this[attrName] ? this[attrName] : this.getAttribute(attrName);
      };
      cascadeSelect.getElementById = function (id) {
        return this.form.elements[id] ? this.form.elements[id]: document.getElementById(id);
      };
      cascadeSelect.setDisplayStyle = function(value) {
        if (!this.multiple){
          this.style.display = value;
        }
        var subElement = this.getElementById(this.getAttr("subElement"));
        if (subElement != undefined){
          subElement.setDisplayStyle = this.setDisplayStyle;
        }
      };
      nodes.getChildNodesByParent = function (parent) {
        var childNodes = new Array();
        if (parent + "" == ""){
          return childNodes;
        }
        for (var i = 0; i < nodes.length; i++){
          if (nodes[i][0] != undefined && nodes[i][0] == parent){
            childNodes[childNodes.length] = nodes[i];
          }
        }
        return childNodes;
      }  if(!isOnChange){
        cascadeSelect.options.length = 0;
        var defaultText = cascadeSelect.getAttr("defaultText");
        var defaultValue = cascadeSelect.getAttr("defaultValue");
        var selectedValue = cascadeSelect.getAttr("selectedValue");    if (defaultText != undefined && defaultValue != undefined){
          cascadeSelect.options[cascadeSelect.options.length] = new Option(defaultText, defaultValue);
        }
        var childNodes = nodes.getChildNodesByParent(parent);
        for (var i = 0; i < childNodes.length; i++){
          cascadeSelect.options[cascadeSelect.options.length] = new Option(childNodes[i][1], childNodes[i][2]);
          if (selectedValue != undefined && selectedValue == childNodes[i][2]){
            cascadeSelect.selectedIndex = cascadeSelect.options.length - 1;
          }
        }
      }  if (cascadeSelect.options.length > 0){
        cascadeSelect.setDisplayStyle("");
        var subElement = cascadeSelect.getElementById(cascadeSelect.getAttr("subElement"));
        if (subElement != undefined){
          setupCascadeSelect(subElement, cascadeSelect.options[cascadeSelect.selectedIndex].value, nodes, false);
        }
      } else {
        cascadeSelect.setDisplayStyle("none");
      }
    }
      

  2.   

    MYLiao(醉书生) 
    <script src="动态页面"></script>
    在动态页里生成数据,如果数据比较稳定或比较大,可以直接生成一个js文件。
      

  3.   

    to HoToo(闲耘)(hotoo.cn) ,我也不是什么高手,以后多切磋,见过你发的代码了,没时间还没细看,不过效果看起来很不错。
      

  4.   

    to BlueDestiny(www.never-online.net):你人呢,看世界杯看晕啊,QQ上找不到你。
      

  5.   

    http://community.csdn.net/Expert/topic/4670/4670852.xml?temp=.8892328
      

  6.   

    呵呵,
    KimSoft,你现在找我的话,最好差不多十二点找我吧,现在看球精神着呢,还有mozilla的“htc”,现在也在写着,关于XBL语言有了解吗?有了解的话,也帮一把吧,毕竟看英文的参考很累的。:D
      

  7.   

    to BlueDestiny:最近郁闷着在
      

  8.   

    无论如何
    先BS百毒!!!!!99收藏夹
    换新服务器拉
    全站ajax开发
    速度快的不得了哦
    http://www.99scj.com
    在线收藏,在线网摘,在线RSS。。