一个通用的无限层次的、通用的联动列表类,请各位评评,并给予指点。 没细看你的代码,不过就数据组织形式(mySelect[0][3][1][3][0] = Array('选项3.1', '3.1', '');)上来看,就不是无限级的,这种组织形式很不利于循环生成。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以看看我写的那棵树的数据组织:CSDN左边的导航树也是 我才简单看了下你的那棵树,以前也看到过,但没认真看,待会再仔细拜读。你的那棵树是用指定父节点和节点ID的形式组织数据。其实我这里还有一个问题没解决,既SELECT包含两层数据:SELECT[name],OPTION[value],这个和树稍有所不同。能帮忙指点下,这样的数据组织为什么不能 新做了修改和完善,“漂亮多了”,请继续指点。请问:如何在指定某一节点后紧贴着入对象,如:<span id="T"></span><span id="T1"></span>T.parentNode.insertBefore( obj );,会变到T1后。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> Select </TITLE><META NAME="Generator" CONTENT="EditPlus"><META NAME="Author" CONTENT=""><META NAME="Keywords" CONTENT=""><META NAME="Description" CONTENT=""></HEAD><BODY><SELECT name="Name"><option value="2">已经</option></SELECT><SELECT name="Name2"><option value="2">已经</option></SELECT><span id="SL"></span><script type="text/javascript" language="JavaScript 1.2">/* * 联动列表类 */function mSelect(name, Options, id, action){ this.name = name; // 列表对象名称 this.id = id; // 列表位置 this.Options = new Array(); //列表选项,多维数组 this.index = -1; // 对象关联层次,设置为-1,为使得第一个选项为0 this.Links = new Array(); // 选项关联对象 this.Created = false; // 列表创建标志:默认--未创建;1--原来不存在,新建立;2--原来存在,增加选项的 this.Select = null; // 列表对象 this.parent = null; // 父列表对象 this.child = null; // 子列表对象 this.action = action; // 处理列表对象选项 if ( Options ) this.addOptionsArray( Options );}// 增加选项数据mSelect.prototype.addOption = function(text, value, selected){ // text 选项文本 // value 选项值 // selected 选项选中状态 if ( !text ) return; // 变量判断:存在,为空,为0,为false value = ( value ) ? value : text; selected = ( selected ) ? true : false; this.index += 1; // 关联索引 this.Options[this.index] = Array(text, value, selected);}// 以数组方式批量载入列表选项mSelect.prototype.addOptionsArray = function( arrOptions ){ if ( typeof(arrOptions)=="string" ) arrOptions = new Array(arrOptions); for ( var i=0; i<arrOptions.length; i++ ){ var aOption = arrOptions[i]; if ( typeof(aOption)=="string" ) aOption = new Array(aOption); var aText = aOption[0]; // 选项文本 var aValue = aOption[1]; // 选项值 var aSelected = aOption[2]; // 选项选中状态 // 增加选项数据 this.addOption( aText, aValue, aSelected ); // 下一级列表数组 var rOption = aOption[3]; if ( rOption ){ // name var _Select = new mSelect( ); _Select.addOptionsArray( rOption ); // 关联子列表对象 this.Link( _Select ); } }}// 关联选项到子列表对象mSelect.prototype.Link = function( oS ){ if ( !oS ) return; this.Links[this.index] = oS;} 要无限就用递归function Tree(){this.SubTrees=new Array();this.addChild=function(ob){ this.SubTrees[this.SubTrees.length]=ob;//...}//..} jQuery获取div id问题 javascript 怎么用if判断文本框是否获得焦点 如何通过JS添加<iframe> overflow:hidden js 怎麼設置打印份數 问关于作用域问题 js水平有限,现求一段JS代码,急要。谢谢。 怎样在javascript 代码段里保存jsp代码段里的Vector 用windows script edit怎么调试? 动态表格生成和获取数据 为什么再我没有点图片PLAY按钮的时候,图片自动跳转啊?刚刚开始做WEB程序,希望高手指教! 高分急问:xsl中table某行checkbox选中后取该行值
你的那棵树是用指定父节点和节点ID的形式组织数据。
其实我这里还有一个问题没解决,既SELECT包含两层数据:SELECT[name],OPTION[value],这个和树稍有所不同。
能帮忙指点下,这样的数据组织为什么不能
请问:如何在指定某一节点后紧贴着入对象,如:
<span id="T"></span><span id="T1"></span>
T.parentNode.insertBefore( obj );,会变到T1后。
<HTML>
<HEAD>
<TITLE> Select </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT=""></HEAD><BODY><SELECT name="Name">
<option value="2">已经</option>
</SELECT>
<SELECT name="Name2">
<option value="2">已经</option>
</SELECT>
<span id="SL">
</span><script type="text/javascript" language="JavaScript 1.2">
/*
* 联动列表类
*/
function mSelect(name, Options, id, action){
this.name = name; // 列表对象名称
this.id = id; // 列表位置 this.Options = new Array(); //列表选项,多维数组 this.index = -1; // 对象关联层次,设置为-1,为使得第一个选项为0
this.Links = new Array(); // 选项关联对象 this.Created = false; // 列表创建标志:默认--未创建;1--原来不存在,新建立;2--原来存在,增加选项的
this.Select = null; // 列表对象
this.parent = null; // 父列表对象
this.child = null; // 子列表对象 this.action = action; // 处理列表对象选项
if ( Options )
this.addOptionsArray( Options );
}// 增加选项数据
mSelect.prototype.addOption = function(text, value, selected){
// text 选项文本
// value 选项值
// selected 选项选中状态
if ( !text ) return;
// 变量判断:存在,为空,为0,为false
value = ( value ) ? value : text;
selected = ( selected ) ? true : false;
this.index += 1; // 关联索引
this.Options[this.index] = Array(text, value, selected);
}
// 以数组方式批量载入列表选项
mSelect.prototype.addOptionsArray = function( arrOptions ){
if ( typeof(arrOptions)=="string" )
arrOptions = new Array(arrOptions);
for ( var i=0; i<arrOptions.length; i++ ){
var aOption = arrOptions[i];
if ( typeof(aOption)=="string" )
aOption = new Array(aOption);
var aText = aOption[0]; // 选项文本
var aValue = aOption[1]; // 选项值
var aSelected = aOption[2]; // 选项选中状态
// 增加选项数据
this.addOption( aText, aValue, aSelected );
// 下一级列表数组
var rOption = aOption[3];
if ( rOption ){
// name
var _Select = new mSelect( );
_Select.addOptionsArray( rOption );
// 关联子列表对象
this.Link( _Select );
}
}
}
// 关联选项到子列表对象
mSelect.prototype.Link = function( oS ){
if ( !oS ) return;
this.Links[this.index] = oS;
}
function Tree(){
this.SubTrees=new Array();
this.addChild=function(ob){ this.SubTrees[this.SubTrees.length]=ob;
//...
}
//..
}