<script type="text/javascript">
var data =new Array();
data[0]= {id:'0',pid:'1',text:'河北'};
data[1]= {id:'1',pid:'-1',text:'中国'};
data[2]= {id:'2',pid:'6',text:'莫斯科'};
data[3]= {id:'3',pid:'0',text:'邯郸'};
data[4]= {id:'4',pid:'0',text:'石家庄'};
data[5]= {id:'5',pid:'3',text:'邯郸县'};
data[6]= {id:'6',pid:'-1',text:'俄罗斯'};
function TreeSelector(item,data,rootId){
this._data = data;
this._item = item;
this._rootId = rootId;
}
TreeSelector.prototype.createTree = function(){
var len =this._data.length;
for( var i= 0;i<len;i++){
if ( this._data[i].pid == this._rootId){
this._item.options.add(new Option(".."+this._data[i].text,this._data[i].id));
for(var j=0;j<len;j++){
this.createSubOption(len,this._data[i],this._data[j]);
}
}
}
}
TreeSelector.prototype.createSubOption = function(len,current,next){
var blank = "..";
if ( next.pid == current.id){
intLevel =0;
var intlvl =this.getLevel(this._data,this._rootId,current);
for(a=0;a<intlvl;a++)
blank += "..";
blank += "├-";
this._item.options.add(new Option(blank + next.text,next.id));
for(var j=0;j<len;j++){
this.createSubOption(len,next,this._data[j]);
}
}
}
TreeSelector.prototype.getLevel = function(datasources,topId,currentitem){
var pid =currentitem.pid;
if( pid !=topId)
{
for(var i =0 ;i<datasources.length;i++)
{
if( datasources[i].id == pid)
{
intLevel ++;
this.getLevel(datasources,topId,datasources[i]);
}
}
}
return intLevel;
}
</script>
</head>
<body>
<!--把下面代码加到<body>与</body>之间-->
<select id="myselect"></select>
<script language=javascript type="text/javascript">
var ts = new TreeSelector(document.getElementById("myselect"),data,-1);
ts.createTree();
</script>
</body>
------解决方案--------------------
- HTML code
<html> <head> <title>Test</title> <script type="text/javascript"> var data = new Array(); data[0] = { id: '0', pid: '1', text: '河北' }; data[1] = { id: '1', pid: '-1', text: '中国' }; data[2] = { id: '2', pid: '6', text: '莫斯科' }; data[3] = { id: '3', pid: '0', text: '邯郸' }; data[4] = { id: '4', pid: '0', text: '石家庄' }; data[5] = { id: '5', pid: '3', text: '邯郸县' }; data[6] = { id: '6', pid: '-1', text: '俄罗斯' }; function TreeSelector(item, data, rootId, val) { this._data = data; this._item = item; this._rootId = rootId; this._val = val; } TreeSelector.prototype.createTree = function() { var len = this._data.length; for (var i = 0; i < len; i++) { if (this._data[i].pid == this._rootId) { this._item.options.add(new Option(".." + this._data[i].text, this._data[i].id)); for (var j = 0; j < len; j++) { this.createSubOption(len, this._data[i], this._data[j]); } } } this._item.value = this._val; } TreeSelector.prototype.createSubOption = function(len, current, next) { var blank = ".."; if (next.pid == current.id) { intLevel = 0; var intlvl = this.getLevel(this._data, this._rootId, current); for (a = 0; a < intlvl; a++) blank += ".."; blank += "├-"; this._item.options.add(new Option(blank + next.text, next.id)); for (var j = 0; j < len; j++) { this.createSubOption(len, next, this._data[j]); } } } TreeSelector.prototype.getLevel = function(datasources, topId, currentitem) { var pid = currentitem.pid; if (pid != topId) { for (var i = 0; i < datasources.length; i++) { if (datasources[i].id == pid) { intLevel++; this.getLevel(datasources, topId, datasources[i]); } } } return intLevel; } </script> </head> <body> <!-- 把下面代码加到<body>与</body>之间--> <select id="myselect"> </select> <script language="javascript" type="text/javascript"> var ts = new TreeSelector(document.getElementById("myselect"), data, -1, 4); ts.createTree(); </script> </body> </html>