|
楼主 |
发表于 2006-7-31 16:36
|
显示全部楼层
Communication.js 文件是操纵XML的 javascript 程序代码,有两个重要函数。
Communication.js
var XDoc = null; //xmldom文档对象
var xmlFile="Communication.xml"; //XML文件
var tableHead="<table align='center' style='border-collapse:collapse' bordercolor='#ffe366' border='2'><tr style='font-size:16pt;color:#f90000;'><th>姓名</th><th>性别</th><th>出生日期</th><th>住址</th><th>家里电话</th><th>手机号码</th><th>电子邮箱</th><th>QQ号码</th></tr><tr>";
//指定关键字查找
function find(classes,keyWords) //classes:查找类别,keyWords:查找关键字
{
if(XDoc==null)
{
XDoc=new ActiveXObject("Microsoft.xmldom");
XDoc.load(xmlFile);
}
if(keyWords==null||(keyWords=Trim(keyWords)).length>11||keyWords.length<1){
window.alert("输入有误,请重新输入");
return false;
}
var XML_root=XDoc.documentElement; //根元素(通信录)
var Level1nodes=XML_root.childNodes; //根以下的所有子集(同学,同事,其它朋友)
var rootLen=Level1nodes.length; //子元素个数
var Level1node,Level1nodes,Level2node,Level2nodes,Level3node,Level3nodes;
var tableStr=tableHead,familyname="",mystring=""
var count=1; //以第几个元素的值来查找
for(var c=0;c<rootLen;c++) //根目录下的子目录循环查找
{
Level2node=Level1nodes.nextNode(); //根下的(同学或同事或其它朋友)
Level2nodes=Level2node.childNodes; //(同学或同事或其它朋友)下的所有个人信息
var NodeLen=Level2nodes.length; //个人信息的个数
for(var i=0;i<NodeLen;i++)
{
//第i个个人信息,currentNode保存当前结点
currentNode=Level3node=Level2nodes.nextNode();
Level3nodes=Level3node.childNodes; //个人信息下的所有子集
if(classes=="QQ")count=7;
else if(classes=="Cellphone")count=5;
for(var j=0;j<count;j++)
Level3node=Level3nodes.nextNode();
familyname=Level3node.text;
if(classes=="FamilyName") //按姓氏查找
{
familyname=Trim(familyname).charAt(0);
keyWords=keyWords.charAt(0);
}
if(familyname==keyWords)
{
Level3nodes=currentNode.childNodes;
for(var j=0;j<Level3nodes.length;j++)
{
Level3node=Level3nodes.nextNode();
if(j==0)mystring+="<td>"+Level3node.text+"</td><td>"+ Level3node.attributes[0].value+"</td>";
else mystring+="<td>"+Level3node.text+"</td>";
}
mystring+="</tr>";
}
}
}
//输出结果
if(mystring.length<10)
{
window.alert("对不起,以"+classes+"来查找,没有找到'"+keyWords+"'的相关信息\n");
return false;
}
mystring=tableStr+mystring+"</table>";
var newWin=window.showModelessDialog("a","","dialogWidth=55;dialogHeight=20")
newWin.document.write("<style type='text/css'>td{font-size:16pt;color:#2235f8}</style>");
newWin.document.write("<body background='communication.jpg'>");
newWin.document.write("<br><h2 align='center' style='color:blue'>查询结果</h2>");
newWin.document.write(mystring);
return false;
}
//去除首尾空格
function Trim(str)
{
var ss=String(str);
return ss.replace(/(^\s*)|(\s*$)/g, "");
}
//按类别查看(和 find 函数相似,不再注释)
function seeAll(classes){ //classes:查找类别
if(XDoc==null)
{
XDoc=new ActiveXObject("Microsoft.xmldom");
XDoc.load(xmlFile);
}
var result=tableHead;
var currentNode;
var Level1nodes,Level2node,Level3nodes;
var count=0;
if(classes=="classmate")count=1;
else if(classes=="workmate")count=2;
else if(classes=="others")count=3;
var XML_root=XDoc.documentElement;
var Level1nodes=XML_root.childNodes;
if(count!=0)
{
for(var i=0;i<count;i++)
{
Level2node=Level1nodes.nextNode();
}
result+=parseNode(Level2node.childNodes,Level2node.childNodes.length);
}else
{
for(var i=0;i<Level1nodes.length;i++)
{
Level2node=Level1nodes.nextNode();
result+=parseNode(Level2node.childNodes,Level2node.childNodes.length);
}
}
outPut(result);
}
//输出
function outPut(result)
{
result+="</table></body><br>";
var w=screen.width-10,h=screen.height-10;
var newWin=window.showModelessDialog("a","","dialogWidth="+w+";dialogHeight="+h)
newWin.document.write("<style type='text/css'>td{font-size:16pt;color:#2235f8}h2{color:blue;text-align:center}</style>");
newWin.document.write("<body background='communication.jpg'>");
newWin.document.write("<br><h2>通信录</h2>");
newWin.document.write(result);
newWin.document.close();
}
//解析节点
function parseNode(nodes,nodesLen)
{
var Level3nodes,len,result="";
for(var j=0;j<nodesLen;j++)
{
Level3nodes=nodes.nextNode().childNodes;
var len=Level3nodes.length;
for(var k=0;k<len;k++)
{
currentNode=Level3nodes.nextNode();
if(k==0)result+="<td>"+currentNode.text+"</td><td>"+currentNode.attributes[0].value+"</td>";
else result+="<td>"+currentNode.text+"</td>";
}
result+="</tr><tr>";
}
return result;
}
这样,就基本上完成了一个网页了。至于如何嵌入QQ面板,==
[ 本帖最后由 powerwind 于 2006-8-1 15:57 编辑 ] |
|