asfman
android developer
posts - 90,  comments - 213,  trackbacks - 0

index.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0035)http://www.youjia.net/tree/tree.asp -->
<HTML><HEAD><TITLE>无限级树形结构</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE>BODY {
 FONT-SIZE: 9pt; CURSOR: default; FONT-FAMILY: 宋体
}
.container {
 BORDER-RIGHT: black 1px solid; PADDING-RIGHT: 1px; BORDER-TOP: black 1px solid; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; BORDER-LEFT: black 1px solid; WIDTH: 13px; PADDING-TOP: 5px; BORDER-BOTTOM: black 1px solid; POSITION: relative; TOP: 4px; HEIGHT: 13px; BACKGROUND-COLOR: #ffffff
}
SPAN.clsCollapse {
 PADDING-LEFT: 1px; FONT-SIZE: 13px; OVERFLOW: hidden; LINE-HEIGHT: 3px; PADDING-TOP: 26px; TOP: 3px
}
SPAN.clsExpand {
 PADDING-LEFT: 1px; FONT-SIZE: 13px; OVERFLOW: hidden; LINE-HEIGHT: 3px; PADDING-TOP: 3px
}
SPAN.clsLeaf {
 PADDING-LEFT: 3px; FONT-SIZE: 11px; OVERFLOW: hidden; LINE-HEIGHT: 0px; TOP: 0px
}
SPAN.clsLabel {
 BORDER-RIGHT: #ffffff 1px solid; BORDER-TOP: #ffffff 1px solid; PADDING-LEFT: 3px; OVERFLOW: hidden; BORDER-LEFT: #ffffff 1px solid; PADDING-TOP: 2px; BORDER-BOTTOM: #ffffff 1px solid; HEIGHT: 17px
}
SPAN.clsMouseOver {
 BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 3px; OVERFLOW: hidden; BORDER-LEFT: #999999 1px solid; CURSOR: hand; PADDING-TOP: 2px; BORDER-BOTTOM: #999999 1px solid; POSITION: relative; HEIGHT: 17px; BACKGROUND-COLOR: #cccccc
}
SPAN.clsMouseOut {
 BORDER-RIGHT: #ffffff 1px solid; BORDER-TOP: #ffffff 1px solid; PADDING-LEFT: 3px; OVERFLOW: hidden; BORDER-LEFT: #ffffff 1px solid; PADDING-TOP: 2px; BORDER-BOTTOM: #ffffff 1px solid; POSITION: relative; HEIGHT: 17px; BACKGROUND-COLOR: #cccccc
}
SPAN.clsMouseDown {
 BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 3px; OVERFLOW: hidden; BORDER-LEFT: #999999 1px solid; PADDING-TOP: 2px; BORDER-BOTTOM: #999999 1px solid; POSITION: relative; HEIGHT: 17px; BACKGROUND-COLOR: #999999
}
SPAN.clsCurrentHasFocus {
 BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 3px; OVERFLOW: hidden; BORDER-LEFT: #999999 1px solid; CURSOR: hand; PADDING-TOP: 2px; BORDER-BOTTOM: #999999 1px solid; POSITION: relative; HEIGHT: 17px; BACKGROUND-COLOR: #ffffff
}
SPAN.clsNotReady {
 BORDER-RIGHT: #ff3300 1px solid; BORDER-TOP: #ff3300 1px solid; PADDING-LEFT: 3px; OVERFLOW: hidden; BORDER-LEFT: #ff3300 1px solid; PADDING-TOP: 2px; BORDER-BOTTOM: #ff3300 1px solid; POSITION: relative; HEIGHT: 17px; BACKGROUND-COLOR: #6487dc
}
DIV.focusColor {
 backgroud-color: red
}
DIV.normalColor {
 backgroud-color: green
}
</STYLE>

<META content="MSHTML 6.00.2800.1522" name=GENERATOR></HEAD>
<BODY onselectstart=SelectStart() style="OVERFLOW: auto" bgColor=#f1f1f1
leftMargin=2 topMargin=10 onload=init() rightMargin=2 marginwidth="0">
<DIV id=pid0 style="PADDING-LEFT: 6px">正在加载页面其他元素,请稍侯……</DIV>
<SCRIPT language=Javascript1.2>
<!--
var rootUrl = "http://www.youjia.net/tree/";
var strType = ""

// 初始化树
function init()
{
 document.getElementById("pid0").innerText = ""
 getXML(0);
}


/* 以下代码实现鼠标事件的样式操作  */
function SelectStart()
{
 window.event.cancelBubble = true;
 window.event.returnValue = false;
 return false;
}

function onMouseOver()
{
 if(window.event.srcElement.tagName=="SPAN" && window.event.srcElement.className=="clsLabel")
 {
  window.event.srcElement.className="clsMouseOver"
  window.event.srcElement.title=window.event.srcElement.innerText
 }
}
function onMouseOut()
{

if(window.event.srcElement.tagName=="SPAN" && window.event.srcElement.className=="clsMouseDown")
{
 window.event.srcElement.className="clsCurrentHasFocus"
 return
}

if(window.event.srcElement.tagName=="SPAN" && window.event.srcElement.className=="clsMouseOver")
 window.event.srcElement.className="clsLabel"
}

function onMouseDown()
{
 for(i=0;i<document.getElementsByTagName("SPAN").length;i++)
 {
  if(document.getElementsByTagName("SPAN")[i].className=="clsCurrentHasFocus") document.getElementsByTagName("SPAN")[i].className="clsLabel"
 }

 if(window.event.srcElement.tagName=="SPAN" && (window.event.srcElement.className=="clsMouseOver" || window.event.srcElement.className=="clsLabel"))
 {
  window.event.srcElement.className="clsMouseDown"
  window.open(window.event.srcElement.href)
 }
}

window.document.onmouseover = onMouseOver
window.document.onmouseout = onMouseOut
//window.document.onmousedown = onMouseDown

/// 得到所给pid的子节点数据。
/// 定义全局变量

var oDiv      //添加用的节点
var nP       //DIV的 padding-left
var xh       //xmlhttp
var checkTimeOut  //记录是否超时
var oTimerId    //计时器事件句柄
var intTimer    //计时器到时标识
function getXML(pid)
{
 xh = new ActiveXObject("Microsoft.XMLHTTP")
 oDiv = document.createElement("DIV");
 nP = parseInt(document.getElementById("pid" + pid).style.paddingLeft)
 oDiv.innerHTML = "<div style='display:;padding-left:"+nP+"px'><span class='container'><span class='clsLeaf'>.</span></span> " + "<span class='clsNotReady' style='color:white'>正在装载栏目数据,请稍侯.......</span></div>"
 oDiv.style.paddingLeft= nP + "px"
 oDiv.style.display= ""
 document.all["pid" + pid].appendChild(oDiv);

 xh.onreadystatechange = getReady
 xh.open("GET",rootUrl + "service.asp?pid=" + pid,true)
 xh.send()
 
}

function getReady()
{
 if(xh.readyState==4)
 {
  if(xh.status==200)
  {
   var xmldom = new ActiveXObject("Microsoft.XMLDOM")
   xmldom = xh.responseXML
   if(xmldom == null || xmldom.documentElement == null)
   {
    oDiv.innerHTML = "<div style='display:;padding-left:"+nP+"px'><span class='container'><span class='clsLeaf'>.</span></span> " + "<span class='clsNotReady'>抱歉,装载数据失败。原因:返回的数据不是一个XML结构的文档。</span></div>"
    return
   }

   var nodes = xmldom.documentElement.selectNodes("/root/item")
   if(nodes == null )
   {
    oDiv.innerHTML = "<div style='display:;padding-left:"+nP+"px'><span class='container'><span class='clsLeaf'>.</span></span> " + "<span class='clsNotReady'>抱歉,装载数据失败。原因:没有返回正确的XML结构格式,</span></div>"
    return
   }

   var str = ""
   for(var i=0;i<nodes.length;i++)
   {
    if(nodes[i].selectSingleNode("Child").text != "0")
    {
     str += "<div style='display:;padding-left:"+nP+"px' id='pid" + nodes[i].selectSingleNode("id").text + "'><nobr><span class='container'><span class='clsCollapse' status='' onclick='hideshow(this,\"pid" + nodes[i].selectSingleNode("id").text +"\")'>+</span></span> "
     str += "<span class='clsLabel' href='#'>"+ nodes[i].selectSingleNode("Title").text + "(" + nodes[i].selectSingleNode("Child").text + ")</span></nobr></div>"
    }
    else
    {
     str += "<div style='display:;padding-left:"+nP+"px' id='pid" + nodes[i].selectSingleNode("id").text + "'><nobr><span class='container'><span class='clsLeaf' onclick='hideshow(this,\"pid"+  nodes[i].selectSingleNode("id").text +"\")'>.</span></span> "
     str += "<span class='clsLabel' href='#'>"+ nodes[i].selectSingleNode("Title").text + "</span></nobr></div>"
    }
   }
   str+=""
   oDiv.innerHTML = str
  }
  else
  {
   oDiv.innerHTML = "<div style='display:;padding-left:"+nP+"px'><span class='container'><span class='clsLeaf'>.</span></span> " + "<span class='clsNotReady'>抱歉,装载数据失败。原因:" + xh.statusText + "</span></div>"
   checkTimeOut = true
  }  
 }
}

function hideshow(o,oId)
{

 var subjectid = oId.substr(3,oId.length)
 if (o.status=="")
 {
  getXML(subjectid)
  o.innerText="-"
  o.status="old"
  return
 }
 var oChild = null
 for(var i=0;i<document.getElementById(oId).childNodes.length;i++)
 {
  if(document.all[oId].childNodes(i).tagName=="DIV") oChild = document.getElementById(oId).childNodes(i)
 }
 if(oChild==null) return

 if(oChild.style.display=="")
 {
  o.innerText="+"
  oChild.style.display="none"
 }
 else
 {
  o.innerText="-"
  oChild.style.display=""
 }
 event.returnValue=false
 return false
}

function addToRadio(o)
{
}

function move(fbox,tbox)
{
 var i = 0;
 if(fbox.value != "")
 {
  var no = new Option();
  no.value = fbox;
  no.text = fbox;
  tbox.options[tbox.options.length] = no;
  fbox.value = "";
 }
}

//-->
</SCRIPT>

server.asp
<%@ Language=VBScript %>
<%
Response.CharSet = "gb2312"
Response.ContentType = "text/xml"
On Error Resume Next
Dim strSQL,rs,pid,strXML,cn

pid = ReplaceBadChar(Request.QueryString("pid"))

strSQL="select ClassID,ClassName,Child From ArticleClass where ParentID=" & pid & " order by classID"

Set cn = Server.CreateObject("ADODB.Connection")

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("ss.mdb")
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open strSQL,cn,1,3
strXML = "<?xml version=""1.0"" encoding=""gb2312""?>"
strXML= strXML & "<root>"
While Not rs.EOF
strXML= strXML & "<item>"
strXML= strXML & "<Child>" & rs("Child") & "</Child>"
strXML= strXML & "<Title>" & rs("ClassName") & "</Title>"
strXML= strXML & "<id>" & rs("ClassID") & "</id>"
strXML= strXML & "</item>"
rs.MoveNext
Wend
strXML= strXML & "</root>"

Response.Write strXML

rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

'**************************************************
'函数名:ReplaceBadChar
'作  用:过滤非法的SQL字符
'参  数:strChar-----要过滤的字符
'返回值:过滤后的字符
'**************************************************
function ReplaceBadChar(strChar)
if strChar="" then
ReplaceBadChar=""
else
ReplaceBadChar=replace(replace(replace(replace(replace(replace(replace(strChar,"'",""),"*",""),"?",""),"(",""),")",""),"<",""),".","")
end if
end function
%>

posted on 2006-04-03 15:07 汪杰 阅读(1091) 评论(1)  编辑 收藏 引用 所属分类: javascripthengxing网站js

FeedBack:
# re: 无限级树形结构用ajax,xml来实现
2009-03-20 16:39 | sbsb03157753286
设备
  回复  更多评论
  
只有注册用户登录后才能发表评论。

<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(15)

随笔分类(1)

随笔档案(90)

文章分类(727)

文章档案(712)

相册

收藏夹

http://blog.csdn.net/prodigynonsense

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 459277
  • 排名 - 6

最新随笔

最新评论

阅读排行榜

评论排行榜