问题说明:层次不限的关联下拉选框 附实例文件是固定填充下拉选框 也可以通过数据库和XML文档获取数据填充 解决方法:script language=JavaScript !-- function Dsy() { this.Items = {}; }; Dsy.prototype.add = function(id,iArray) { this.Items[id] = iArray; }; Dsy.prototype.Exists = function(id) { if(typeof(this.Items[id]) == undefined) return false; return true; }; function attachSelect(oDsy, aSel, aStore) { var Sel = new Array(); var Store = aStore []; if (!oDsy instanceof Dsy) throw new Error('Data error'); for (var i=0; iaSel.length; i++) { Sel[i] = document.getElementById(aSel[i]); } function addEvent(el, sHandler, fnc) { if (el.attachEvent) el.attachEvent(sHandler, fnc); else if (el.addEventListener) el.addEventListener(String(sHandler).replace(oni, ''), fnc, false); else el[sHandler] = fnc; }; function doChange(v) { var str = 0; for (var i = 0; i v; i++) { str += (_ + Sel[i].selectedIndex); }; var ss = Sel[v]; if (oDsy.Exists(str)) { with (ss) { length = 0; var ar = oDsy.Items[str], xx = 0; for (var i = 0; i ar.length; i++) { var ot = ar[i][0], ov = ar[i][1] ar[i][1] ot; if (ov == Store[v]) xx = i; options[i] = new Option(ot, ov); } options[xx].selected = true; if (++v Sel.length) doChange(v); } } else { for (var i = v; iSel.length; i++) { with (Sel[i]) { length = 0; options[0] = new Option(--, ); options[0].selected = true; } } } } for (var i = 0; iSel.length - 1; i++){ addEvent(Sel[i], onchange, function(x) { return function () { doChange(x); } }(i+1)); } doChange(0); }; -- script script language=JavaScript !-- var dsy1 = new Dsy(); dsy1.add(0,[[华南理工大学],[中山大学]]); dsy1.add(0_0,[[理学院],[计算机学院]]); dsy1.add(0_0_0,[[物理系],[数学系]]); dsy1.add(0_0_0_0,[[光电],[微电]]); dsy1.add(0_0_0_0_0,[[光电2000],[光电2001],[光电2002]]); dsy1.add(0_0_0_0_1,[[微电00],[微电01]]); dsy1.add(0_0_0_1,[[应用数学]]); dsy1.add(0_0_0_1_0,[[应数一班],[应数二班]]); dsy1.add(0_0_1,[[计算机网络],[计算机软件]]); dsy1.add(0_0_1_0,[[计网一班],[计网二班]]); dsy1.add(0_0_1_1,[[计机一班],[计机二班],[计机三班]]); dsy1.add(0_0_1_1_0,[[一组],[二组],[三组],[四组]]); dsy1.add(0_1,[[管理学院]]); dsy1.add(0_1_0,[[工商管理],[会计系]]); dsy1.add(0_1_0_0,[[工管一班],[工管二班]]); dsy1.add(0_1_0_1,[[国际会计],[注册会计]]); dsy1.add(0_1_0_1_0,[[国会一班],[国会二班]]); dsy1.add(0_1_0_1_1,[[注会一班],[注会二班]]); var s1 = [s1,s2,s3,s4,s5]; var st1 = [中山大学,管理学院,会计系,注册会计]; attachSelect(dsy1,s1,st1) -- script 涉及技术:Web技术 作者:方生红
没有相关教程
|