小弟对JS一窍不通,请大家伸援手,最好写详细些,拿过来就能用!
xml文件如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root code="root">
<list code="jiaoyu" name="教育">
<list code="kaoyan" name="考研">
<list code="zhaosheng" name="招生">
<list code="peixun" name="培训">
</list>
<list code="xinwen" name="新闻">
<list code="guonei" name="国内">
<list code="shehui" name="社会">
<list code="guoji" name="国际">
</list>
<list code="jiaoyu" name="体育">
<list code="zuqiu" name="足球">
<list code="NBA" name="NBA">
<list code="wangqiu" name="网球">
</list>
要求实现效果:1:用JS读取,在页面上实现这样的效果
教育(父结点)
考研 招生 培训
新闻
国内 社会 国际
体育
足球 NBA 网球2:最好可以自定义样式,而且点击父节点(如:教育)的时候子节点(如:考研 招生 培训)才从父节点下面的那个层里显示出来(开始时并不显示的)!3:而且在页面的下面还有个层,当我点击了诸如“考研”和“NBA”时下面那个层里就会相应的显示如下:
/*****************************************************/
考研 【删除】
NBA 【删除】
/*****************************************************/
可以删除所选这两项!(尽量不用服务器控件)4:在页面后台怎么获取我选择的(“考研”和“NBA”)值?目前急需的就以上4项!!!
大侠现身显身手!
xml文件如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root code="root">
<list code="jiaoyu" name="教育">
<list code="kaoyan" name="考研">
<list code="zhaosheng" name="招生">
<list code="peixun" name="培训">
</list>
<list code="xinwen" name="新闻">
<list code="guonei" name="国内">
<list code="shehui" name="社会">
<list code="guoji" name="国际">
</list>
<list code="jiaoyu" name="体育">
<list code="zuqiu" name="足球">
<list code="NBA" name="NBA">
<list code="wangqiu" name="网球">
</list>
要求实现效果:1:用JS读取,在页面上实现这样的效果
教育(父结点)
考研 招生 培训
新闻
国内 社会 国际
体育
足球 NBA 网球2:最好可以自定义样式,而且点击父节点(如:教育)的时候子节点(如:考研 招生 培训)才从父节点下面的那个层里显示出来(开始时并不显示的)!3:而且在页面的下面还有个层,当我点击了诸如“考研”和“NBA”时下面那个层里就会相应的显示如下:
/*****************************************************/
考研 【删除】
NBA 【删除】
/*****************************************************/
可以删除所选这两项!(尽量不用服务器控件)4:在页面后台怎么获取我选择的(“考研”和“NBA”)值?目前急需的就以上4项!!!
大侠现身显身手!
http://www.v-ec.com/dh20156/code/dhxmltreeview/dhxmltreeAJ.htmJS地址:
http://www.v-ec.com/dh20156/code/dhxmltreeview/dhXmlTreeView.js较早前写的一个加载xml文件生成的树,参考下加载xml文件的方法就好了,其他的东西都没啥大价值!
var dom = new ActiveXObject("MSXML.DOMDocument");
dom.async = false;
var xml = dom.load(xmlfilepath);
var list = xml.documentElement.getElementsByTagName("list");
for(var i=0;i<list.length;i++)
{
if(i%4==0) document.write(list[i].getAttribute("name"));
else document.write(" "+list[i].getAttribute("name"));
}
很简单的说~~不过楼主的xml文档明显不是"合式"的~~
子list标签都没有闭合...
他是这段时间最勤奋的银,祝你遇到你的恩公
其次大家也不是无所事事的
新年快乐~~~
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { // 信息已经成功返回,开始处理信息 var xmlDoc; var moz = (typeof document.implementation != 'undefined')
&& (typeof document.implementation.createDocument != 'undefined');
var ie = (typeof window.ActiveXObject != 'undefined'); if (moz) {
xmlDoc = document.implementation.createDocument("", "doc", null); } else if (ie) {
xmlDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
xmlDoc.async = false;
}
xmlDoc.load(http_request.responseXML);
if (moz) {
var zip = xmlDoc.getElementsByTagName("pro")[0];
var _city = zip.getElementsByTagName("proName")[0].firstChild.nodeValue;
// if (_city) city = _city.Trim();
alert("moz:"+_city);
} else if (ie) {
var yy=xmlDoc.documentElement;
var pros = yy.selectSingleNode("//pros").childNodes;
for(var i=0;i<pros.length;i++){
var prdName = pros[i].selectSingleNode("prdName").text;
var companyCode = pros[i].selectSingleNode("companyCode").text;
var companyName = pros[i].selectSingleNode("companyName").text;
.............................
var sub1= pros[i].selectSingleNode("sub1").text;
var sub2= pros[i].selectSingleNode("sub2").text;
var sub3= pros[i].selectSingleNode("sub3").text;
var sub4= pros[i].selectSingleNode("sub4").text;
var sub5= pros[i].selectSingleNode("sub5").text;
//--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
var getTb= document.getElementById("table1");
var crTR = getTb.insertRow(); //行已经加完了,再加一个包含td和另一个带rowspan=2的TD,当然,是在TR的基础上;
var crTDa = crTR.insertCell(); //第一个TD ,带rowspan=4
var crTDb = crTR.insertCell(); //第二个TD,
var crTDc = crTR.insertCell();
crTDa.rowSpan=2; //设成 rowspan=4;
crTDa.width=60;
crTDb.height=40;
crTDb.width=180;
crTDc.height=20;
//添加完了,写点内容吧。
var inputs = document.createElement("<INPUT name='radio' type='radio'>"); //创建单选钮
//inputs.type ="radio";
inputs.value = proCode;
inputs.name = price;
crTDa.innerHTML="<b>"+prdName+"<br />"+proTypes+"款</b>";
crTDa.appendChild(inputs);
crTDb.innerHTML="<font style=font:14pt ><b>保费价格:"+price+"元</b></font>"; //face=隶书 color=000000
crTDc.innerHTML="意外身故险保额(元):"+accidentalDeath+"<br />意外残疾险保额(元):"+accidentalDisableds+"<br />意外医疗险保额(元):"+accidentalMedicalCosts;
var croTR = getTb.insertRow(); //再插入一个TR
var crTDd = croTR.insertCell(); //TD,对应上边的rowspan=2的TD
var crTDe = croTR.insertCell();
crTDd.height=20;
crTDe.height=20;
crTDd.innerHTML="救援费用:<br />"+sub1+"元";
crTDe.innerHTML="行李丢失险保额(元):"+sub2+"<br />急性病身故险保额(元):"+sub3+"<br />第三者险保额(元):"+sub4;
}
// var pro=_city[0].selectSingleNode("proName");
// alert("ie:"+pro.text);
}
ordB(); }else { //页面不正常
alert("您所请求的页面有异常.....");
}
}
}
// JavaScript Document//=======================================================
//函数名称:getObject(objectId)
// 参数objectId:控件的ID值
//函数功能:获得控件的ID值
//返 回 值:ture(获得ID值) false(获取ID失败)
//=======================================================
function getObject(objectId) {
if(document.getElementById && document.getElementById(objectId))
{
// W3C DOM
return document.getElementById(objectId);
}
else if (document.all && document.all(objectId))
{
// MSIE 4 DOM
return document.all(objectId);
}
else if (document.layers && document.layers[objectId])
{
// NN 4 DOM.. note: this won't find nested layers
return document.layers[objectId];
}
else
{
return false;
}
}// 显示列表框
function displayList(n,dHeight){
var h = getObject('menu'+ n).offsetHeight; // 内容容器class_cnt1的初始高度(这时高度为:0)
var max_h = dHeight; // 容器的最大高度
var anim = function(){
h += 41; // 每次递增20像素
//如果增加的高度开始超过容的最大高度
if(h >= max_h)
{
getObject('menu'+ n).style.height = dHeight; // 工期高度为287px(因为我们只希望容器这么高)
getObject('img'+ n).src="/static/img06/icon_close.gif"; // 让图片标签改变背景
if(loop)
{
window.clearInterval(loop);
} // 如果高度在每2毫秒递减,则清除该行为(如果不清除,程序将一直自动运行高度每2毫秒递减)
}
else
{
// 如果增加中的容器高度没有超过最大高度
getObject('menu'+ n).style.display="block"; // 让容器可见(这样我们才能够看到容器在增高的效果)
getObject('menu'+ n).style.height = h + "px"; // 容器高度不断的以20px递增
}
}
var loop = window.setInterval(anim,10); // 设置每2毫秒循环一次(每2毫秒,运行一次anim[容器的高度递减50px])
}// 隐藏列表框
function hiddenList(n,dHeight){
var h = getObject('menu'+ n).offsetHeight; // 内容容器class_cnt1的初始高度(这时高度为:最大高度)
var anim = function()
{
h -= 41; // 每次递减20像素
if(h <= 5)
{
getObject('menu'+ n).style.display="none"; // 内容容器不可见(当容器高度小于5px)
//getObject('img'+ n).src="/static/img06/icon_open.gif";
if(loop)
{
window.clearInterval(loop);
}
}
else{
getObject('menu'+ n).style.height = h + "px"; // // 容器高度不断的以20px递减
}
}
var loop = window.setInterval(anim,10); // 设置每2毫秒循环一次(每2毫秒,运行一次anim[容器的高度递减10px])
}//=======================================================
//函数名称:showClassList()
//函数功能:隐藏-显示级分类列表框(class_cnt1)
//返 回 值:无
//=======================================================
function showClassList(n,dHeight){
var dHeight=dHeight // 如果内容容器为不可见的display:none
if(getObject('menu'+ n).style.display == "none"){
//getObject('tdTitle' + n).title = "点击收缩"
//getObject('showTxt' + n).innerText = "(点击收缩)"
displayList(n,dHeight); // 显示内容框
}
else{ // 如果内容容器为可见的display:block
//getObject('tdTitle' + n).title = "点击展开"
//getObject('showTxt' + n).innerText = "(点击展开)"
hiddenList(n,dHeight); // 隐藏内容框
}
}
===============================页面===============================================
<a href="javascript:void(0)" onClick="showClassList(1,300)" style="cursor:hand">
<span>请选择</span></a>  </a><div id="menu1">
<input onclick="test()" type="checkbox" id="10000" value="奥地利" />奥地利 <input onclick="test()" type="checkbox" id="10000" value="比利时" />比利时 <input onclick="test()" type="checkbox" id="10000" value="法国" />法国
</div>
<div >
<span>世界其它国家或地区请选择:</span><input type="text" id="guojias" onClick="showClassList(2,650)" />
</div>
<div id="menu2">
<span><strong>亚洲地区:</strong></span><br/>
<input onclick="test()" type="checkbox" id="23000" value="吉尔吉斯坦"/>吉尔吉斯坦 <input onclick="test()" type="checkbox" id="23040" value="亚美尼亚" />亚美尼亚 <input onclick="test()" type="checkbox" id="23020" value="几内亚" />几内亚
</div>
<br/> <span onClick="showClassList(3,650)"><strong>欧洲地区:</strong></span><br/>
<div id="menu3">
<input onclick="test()" type="checkbox" id="23100" value="马其顿" />马其顿
</div>
<br/> <span onClick="showClassList(4,650)"><strong>北美洲地区:</strong></span><br/>
<div id="menu4">
<input onclick="test()" type="checkbox" id="10000" value="美国" />美国 <input onclick="test()" type="checkbox" id="10000" value="加拿大" />加拿大 <input onclick="test()" type="checkbox" id="10000" value="墨西哥" />墨西哥 <input onclick="test()" type="checkbox" id="10000" value="牙买加" />牙买加 <input onclick="test()" type="checkbox" id="10000" value="多米尼加" />多米尼加
</div>
=============================================
这是几段代码,不是完整页面,你主要看看他功能实现的方式,应该对你有帮助,另外新学一样东西一定要多实验,多找答案,并不见得要人给你完整的答案。
有些小缺点:只支持2层,code或name属性不能包含:左右括号和单双引号(因为正则没写太严格)
外表比较丑,你自己改<!-- 装数据的textarea -->
<textarea id="doc" style="display:none">
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root code="root">
<list code="jiaoyu" name="教育" >
<list code="kaoyan" name="考研" />
<list code="zhaosheng" name="招生" />
<list code="peixun" name="培训" />
</list>
<list code="xinwen" name="新闻">
<list code="guonei" name="国内" />
<list code="shehui" name="社会" />
<list code="guoji" name="国际" />
</list>
<list code="jiaoyu" name="体育">
<list code="zuqiu" name="足球" />
<list code="NBA" name="NBA" />
<list code="wangqiu" name="网球" />
</list>
</root>
</textarea>
<!-- 显示列表的层 -->
<div id="list"></div><!-- 显示删除按钮的层 -->
<div id="control"></div>
<script>
window.onload=function(){
initList();
}
function initList(){
/* 以文本形式获得要解析的xml文档 */
var text=document.getElementById("doc").value; /* 提取第一级list */
var reg=/<list[^>]*>(?:(?!<\/list>)[\s\S])*<\/list>/g;
var m=text.match(reg);
for(var i=0,j=m.length;i<j;i++){
var node=new ListNode(m[i],true);
document.getElementById("list").appendChild(node.getHTMLElement());
}
}/* ListNode数据类型,
2个参数 up是这个节点的脚本 hasChild是是否拥有子节点
例如up为
<list code="jiaoyu" name="体育">
<list code="zuqiu" name="足球" />
<list code="NBA" name="NBA" />
<list code="wangqiu" name="网球" />
</list>
那么传进去后由这个对象进行解析,解析出code和name属性以及子节点
分别是_getCode();_getName();_getChildren() 3个函数
*/
function ListNode(up,hasChild){
this.up=up;
this.code=null;
this.name=null;
this._getCode();
this._getName();
if(hasChild){
this.nodes=[];
this._getChildren();
}else{ this.nodes=null ;}
}/*
分析脚本,如:<list code="jiaoyu" name="体育">
获取其中的code和name属性
*/
ListNode.prototype._getCode=function(){
var reg=/^<list\s(?:(?!code=|>).)*code\s?=\s?["']([^"'>]*)["'][^>]*>/;
var m=this.up.match(reg);
this.code=m[1];
}
ListNode.prototype._getName=function(text){
var reg=/^<list\s(?:(?!name=|>).)*name\s?=\s?["']([^>]*)["'][^>]*>/;
var m=this.up.match(reg);
this.name=m[1];
}ListNode.prototype._getChildren=function(){
var reg=/<list[^\/>]*\/>/g;
var m=this.up.match(reg);
for(var i=0,j=m.length;i<j;i++){
var node=new ListNode(m[i],false);
this.nodes.push(node);
}
}/* 重写toString()函数 方便调试用的*/
ListNode.prototype.toString=function(){
var str=[];
str.push("Name:"+this.name+",");
str.push("Code:"+this.code+"\n");
if(this.nodes!=null){
for(var i=0,j=this.nodes.length;i<j;i++){
str.push(" "+this.nodes[i]);
}
}
return str.join("");
}/* 子节点 如:篮球、NBA 的点击处理 */
ListNode.prototype.childrenClick=function(){
var tmp="delete.asp?code="+this.code+"&name="+escape(this.name);
var html=this.name+"<a href='"+tmp+"'>【删除】<\/a>";
document.getElementById("control").innerHTML=html;
}/* 标题节点 如:体育 的点击处理 */
ListNode.prototype.bodyClick=function(){
var display=this._UI.childLayer.style.display;
this._UI.childLayer.style.display=(display=="none"?"":"none");
}/* 把对象转化为html元素 */
ListNode.prototype.getHTMLElement=function(){
var e;
var listNode=this;
if(this.nodes==null){
e=document.createElement("span");
this._UI=e;
e.className="childNode";
e.innerHTML=this.name;
e.onclick=function(){
listNode.childrenClick(this);
}
}else{
e=document.createElement("div");
this._UI=e;
e.className="listNode";
e.bodyLayer=document.createElement("div");
e.bodyLayer.innerHTML=this.name;
e.bodyLayer.className="bodyLayer"
e.childLayer=document.createElement("div");
e.childLayer.style.display="none";
e.childLayer.className="childLayer";
for(var i=0,j=this.nodes.length;i<j;i++){
e.childLayer.appendChild(this.nodes[i].getHTMLElement());
}
e.appendChild(e.bodyLayer);
e.appendChild(e.childLayer);
e.bodyLayer.onclick=function(){
listNode.bodyClick();
}
}
return e;
}</script>
<!-- 样式自己改,看颜色你就知道是哪个元素了 -->
<style>
#list{
display:block;
width:300px;
heigth:auto;
}
#control{
background-color:pink;
display:block;
width:300px;
heigth:auto;
}
.listNode{}
.childNode{
background-color:white;
margin:10px;
}
.childLayer{
background-color:black;
}
.bodyLayer{
background-color:gold;
}
</style>
data.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root code="root">
<Plist code="jiaoyu" name="教育">
<list code="kaoyan" name="考研" />
<list code="zhaosheng" name="招生" />
<list code="peixun" name="培训" />
</Plist>
<Plist code="xinwen" name="新闻">
<list code="guonei" name="国内" />
<list code="shehui" name="社会" />
<list code="guoji" name="国际" />
</Plist>
<Plist code="jiaoyu" name="体育">
<list code="zuqiu" name="足球" />
<list code="NBA" name="NBA" />
<list code="wangqiu" name="网球" />
</Plist>
</root>index.htm<html>
<head>
<style type="text/css">
/* 现在的 CSS 样式是乱来的,自己修改 */
#list {
background: #f00;
padding: 2px;
}
.div1 {
background: #8f8;
width: 500px;
margin: 10px;
}
.div2 {
border: 1px solid #000;
width: 100px;
margin: 3px;
color: #fff;
}
.div2 A { color: #004; }
.div3 {
border: 1px dotted #00f;
margin: 3px;
}
.div4 {
margin: 3px;
background: #000;
display: inline;
}
.div4 A { color: #fff; }#slc {
background: #f0f;
width: 400px;
}
.div5 {
border: 1px solid #000;
line-height: 30px;
display: inline;
}
.div6 {
background: #fff;
line-height: 30px;
display: inline;
}
</style>
<meta http-equiv="Content-Language" content="zh-CN">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script type="text/javascript">
var doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = false;
doc.load("data.xml");
nodes = doc.documentElement.childNodes;function addRecord(id, i) {
var did = "SN_" + id + "_" + i;
var div = document.getElementById(did);
if (div) return;
div = document.createElement("DIV");
div.setAttribute("id", did);
div.innerHTML = "<div class='div5'>" + nodes[id].childNodes[i].getAttribute("name") + "</div>";
div.innerHTML += " ";
div.innerHTML += "<div class='div6'><a href='#' onclick=\"javascript: this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);\">删除</a></div>";
document.getElementById("slc").appendChild(div);
}
function toggle(ele) {
if (ele.style.display != "none")
ele.style.display = "none";
else
ele.style.display = "";
}
function showList(id, lnk) {
var node = document.getElementById("list" + id);
node.style.display = "";
lnk.onclick = function() { toggle(node); };
for (var i=0; i<nodes[id].childNodes.length; i++) {
node.innerHTML += "<div class='div4'><a onclick='javascript:addRecord("+id+","+i+");' href='#'>"+nodes[id].childNodes[i].getAttribute("name")+"</a></div>";
}
}
function checkSubmit(frm) {
var slc = document.getElementById("slc");
if (slc.childNodes.length == 0) {
alert("至少选择一个!");
return false;
}
var res = new Array();
for (var i=0; i<slc.childNodes.length; i++) {
var arr = slc.childNodes[i].getAttribute("id").split("_");
var str = nodes[parseInt(arr[1])].childNodes[parseInt(arr[2])].getAttribute("code");
str += "|";
str += nodes[parseInt(arr[1])].childNodes[parseInt(arr[2])].getAttribute("name");
res.push(str);
}
frm.selected.value = res.join(",");
return true;
}
</script>
</head>
<body>
<div id="list">
<script type="text/javascript">
for (var i=0; i<nodes.length; i++) {
document.write("<div class='div1'>");
document.write(" <div class='div2'><a href='#' onclick='javascript: showList(" + i + ", this)'>" + nodes[i].getAttribute("name") + "</a></div>");
document.write(" <div class='div3' style='display:none;' id='list" + i + "'></div>");
document.write("</div>");
}
</script>
</div> <div id="slc"></div><div>
<form action="do.asp" method="post" onsubmit="javascript: return checkSubmit(this);">
<input type="hidden" value="" name="selected" />
<input type="submit" value=" 提 交 " />
</form>
</div>
</body>
</html>do.asp
<%
Response.Write Request.Form("selected")
%>
<textarea id="doc" style="display:none">
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root code="root">
<list code="jiaoyu" name="教育" >
<list code="kaoyan" name="考研" />
<list code="zhaosheng" name="招生" />
<list code="peixun" name="培训" />
</list>
<list code="xinwen" name="新闻">
<list code="guonei" name="国内" />
<list code="shehui" name="社会" />
<list code="guoji" name="国际" />
</list>
<list code="jiaoyu" name="体育">
<list code="zuqiu" name="足球" />
<list code="NBA" name="NBA" />
<list code="wangqiu" name="网球" />
</list>
</root>
</textarea>
<!-- 显示列表的层 -->
<div id="list"></div><!-- 显示删除按钮的层 -->
<div id="control"></div>
<script>
window.allChildrenNodes=[];
window.onload=function(){
initList();
}
function initList(){
/* 以文本形式获得要解析的xml文档 */
var text=document.getElementById("doc").value; /* 提取第一级list */
var reg=/<list[^>]*>(?:(?!<\/list>)[\s\S])*<\/list>/g;
var m=text.match(reg);
for(var i=0,j=m.length;i<j;i++){
var node=new ListNode(m[i],true);
document.getElementById("list").appendChild(node.getHTMLElement());
}
}/* ListNode数据类型,
2个参数 up是这个节点的脚本 hasChild是是否拥有子节点
例如up为
<list code="jiaoyu" name="体育">
<list code="zuqiu" name="足球" />
<list code="NBA" name="NBA" />
<list code="wangqiu" name="网球" />
</list>
那么传进去后由这个对象进行解析,解析出code和name属性以及子节点
分别是_getCode();_getName();_getChildren() 3个函数
*/
function ListNode(up,hasChild){
this.up=up;
this.code=null;
this.name=null;
this._getCode();
this._getName();
if(hasChild){
this.nodes=[];
this._getChildren();
}else{
this.nodes=null ;
this.selected=false;
ListNode.allChildrenNodes.push(this);
}
}/*
分析脚本,如:<list code="jiaoyu" name="体育">
获取其中的code和name属性
*/
ListNode.prototype._getCode=function(){
var reg=/^<list\s(?:(?!code=|>).)*code\s?=\s?["']([^"'>]*)["'][^>]*>/;
var m=this.up.match(reg);
this.code=m[1];
}
ListNode.prototype._getName=function(text){
var reg=/^<list\s(?:(?!name=|>).)*name\s?=\s?["']([^>]*)["'][^>]*>/;
var m=this.up.match(reg);
this.name=m[1];
}ListNode.prototype._getChildren=function(){
var reg=/<list[^\/>]*\/>/g;
var m=this.up.match(reg);
for(var i=0,j=m.length;i<j;i++){
var node=new ListNode(m[i],false);
this.nodes.push(node);
}
}/* 重写toString()函数 方便调试用的*/
ListNode.prototype.toString=function(){
var str=[];
str.push("Name:"+this.name+",");
str.push("Code:"+this.code+"\n");
if(this.nodes!=null){
for(var i=0,j=this.nodes.length;i<j;i++){
str.push(" "+this.nodes[i]);
}
}
return str.join("");
}/* 子节点 如:篮球、NBA 的点击处理 */
ListNode.prototype.childrenClick=function(){
this.selected=!this.selected;
var allChildrenNodes=ListNode.allChildrenNodes;
var html=[];
for(var i=0,j=allChildrenNodes.length;i<j;i++){
if(allChildrenNodes[i].selected){
var tmp="delete.asp?code="+allChildrenNodes[i].code+"&name="+escape(allChildrenNodes[i].name);
html.push("<ul>"+allChildrenNodes[i].name+"<a href='"+tmp+"'>【删除】<\/a></ul>");
}
}
document.getElementById("control").innerHTML=html.join("");
}
ListNode.allChildrenNodes=[];
/* 标题节点 如:体育 的点击处理 */
ListNode.prototype.bodyClick=function(){
var display=this._UI.childLayer.style.display;
this._UI.childLayer.style.display=(display=="none"?"":"none");
}/* 把对象转化为html元素 */
ListNode.prototype.getHTMLElement=function(){
var e;
var listNode=this;
if(this.nodes==null){
e=document.createElement("span");
this._UI=e;
e.className="childNode";
e.innerHTML=this.name;
e.onclick=function(){
listNode.childrenClick();
}
}else{
e=document.createElement("div");
this._UI=e;
e.className="listNode";
e.bodyLayer=document.createElement("div");
e.bodyLayer.innerHTML=this.name;
e.bodyLayer.className="bodyLayer"
e.childLayer=document.createElement("div");
e.childLayer.style.display="none";
e.childLayer.className="childLayer";
for(var i=0,j=this.nodes.length;i<j;i++){
e.childLayer.appendChild(this.nodes[i].getHTMLElement());
}
e.appendChild(e.bodyLayer);
e.appendChild(e.childLayer);
e.bodyLayer.onclick=function(){
listNode.bodyClick();
}
}
return e;
}</script>
<!-- 样式自己改,看颜色你就知道是哪个元素了 -->
<style>
#list{
display:block;
width:300px;
heigth:auto;
}
#control{
background-color:pink;
display:block;
width:300px;
heigth:auto;
}
.listNode{}
.childNode{
background-color:white;
margin:10px;
}
.childLayer{
background-color:black;
}
.bodyLayer{
background-color:gold;
}
</style>
<DataSource xmlns="http://tempuri.org/DataSource.xsd">
<Data>
<v_Source>计算机类</v_Source>
<v_GroupName>软件</v_GroupName>
<v_title>程序员</v_title>
</Data>
<Data>
<v_Source>计算机类</v_Source>
<v_GroupName>软件</v_GroupName>
<v_title>系统分析员</v_title>
</Data>
<Data>
<v_Source>计算机类</v_Source>
<v_GroupName>软件</v_GroupName>
<v_title>项目经理</v_title>
</Data>
<Data>
<v_Source>计算机类</v_Source>
<v_GroupName>硬件</v_GroupName>
<v_title>网络工程师</v_title>
</Data>
<Data>
<v_Source>计算机类</v_Source>
<v_GroupName>硬件</v_GroupName>
<v_title>计算机维护</v_title>
</Data>
<Data>
<v_Source>计算机类</v_Source>
<v_GroupName>数据库</v_GroupName>
<v_title>数据库开发</v_title>
</Data>
<Data>
<v_Source>计算机类</v_Source>
<v_GroupName>数据库</v_GroupName>
<v_title>数据库管理</v_title>
</Data>
<Data>
<v_Source>行政/管理类</v_Source>
<v_GroupName>行政</v_GroupName>
<v_title>文秘</v_title>
</Data>
<Data>
<v_Source>行政/管理类</v_Source>
<v_GroupName>行政</v_GroupName>
<v_title>助理</v_title>
</Data>
<Data>
<v_Source>行政/管理类</v_Source>
<v_GroupName>行政</v_GroupName>
<v_title>经理</v_title>
</Data>
<Data>
<v_Source>行政/管理类</v_Source>
<v_GroupName>管理</v_GroupName>
<v_title>总经理</v_title>
</Data>
<Data>
<v_Source>行政/管理类</v_Source>
<v_GroupName>管理</v_GroupName>
<v_title>部门经理</v_title>
</Data>
<Data>
<v_Source>行政/管理类</v_Source>
<v_GroupName>管理</v_GroupName>
<v_title>总监</v_title>
</Data>
</DataSource>
aspx.cs:
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("DataSource.xml"));
for(int i = 0;i <ds.Tables[0].Rows.Count ;i++)
{
DataRow dr = ds.Tables[0].Rows[i];
Want.Text += String.Format("Group[Groupcount++] = new Array(\"{0}\",\"{1}\",\"{2}\");\n", dr["v_Source"],dr["v_GroupName"].ToString(), dr["v_title"].ToString());
if (SourceList1.Items.FindByText(dr["v_Source"].ToString()) == null)
{
SourceList1.Items.Add(dr["v_Source"].ToString());
}
}
}
}三个下拉框关联!
LZ一看就明白了!