javascript+xmlhttp+dom 写的一个统计小版主参与帖子和得分帖子数量的工具[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 awaysrain 的 blog

     因为版主工作的需要,需要统计小版主的工作,以前总是用版主管理的回复查询手工统计,累的受不了了,用javascript + xmlhttp + dom 写了个统计工具。
以下是代码,请在晚上或周末的时候进行统计,要不速度太慢统计不出来


<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>版主统计</title>
<script language=javascript>

var xmldoc = new activexobject("msxml2.domdocument.4.0");
xmldoc.async = false;

function getsmallroomlist(doc,bigroomid)  //得到大版下的小版列表
{
 var url = "http://expert.csdn.net/expert/deeptree/rooms/" + bigroomid + "/list.xml"
 doc.load(url);
 var nodelist = doc.documentelement.selectnodes("//tree/treenode");
 var listarray = new array(nodelist.length);
 for(var i=0;i<nodelist.length;i++)
 {
  listarray[i] = new array(nodelist[i].getattribute("nodeid"),nodelist[i].getattribute("title"));
 }
 return listarray;
}
function getsmallmasterlist(doc,smallroomid)  //得到小版的版主列表
{
 var url = "http://expert.csdn.net/expert/rooms/small/" + smallroomid + "/forum_" + smallroomid + "_1.xml"
 doc.load(url);
 var line2 = doc.documentelement.selectsinglenode("//forum/top/line2");
 var tmpstr = line2.text;
 var re=/\">[\s\s]*</ig;
 var smallmasterlist=tmpstr.match(re)
 for(var i=0;i<smallmasterlist.length;i++)
 {
  smallmasterlist[i] = smallmasterlist[i].substr(2,smallmasterlist[i].length-3);
 }
 return smallmasterlist
}

function streamtochar(strstream)
{

 var stream = new activexobject("adodb.stream");
 stream.type=1;
  stream.mode=3;
  stream.open() ;
  stream.write(strstream);
  stream.position= 0;
  stream.type= 2;
  stream.charset="gb2312";
  var result= stream.readtext();
  stream.close();
  stream = null;
 return result;
}

function gettopicslist(replyusername,roomid,type,month,year)  //得到帖子数量列表
{
 var url = "http://expert.csdn.net/xxx/xxx.aspx?room=" + roomid + "&type=" + type + "&replyusername=" + replyusername + "&month=" + month + "&year=" + year;  //这个地址csdn还没有公开,所以我替换成xxx了,需要的朋友请找我要这个地址!
 var xmlhttp = new activexobject("microsoft.xmlhttp");
 xmlhttp.open("get",url, false);

 try
 {
  xmlhttp.send();
  var result = xmlhttp.status;
 }
 catch(e)
 {
   return(false);
 }

 if(result==200)
 {
  var tmp = streamtochar(xmlhttp.responsebody);
  var re = /<td colspan="4" align="left">[\s\s]*<font color=red>/ig;
  try
  {
   tmp = tmp.match(re);
   tmp = tmp[0]
   tmp = tmp.split(":")[1]
   tmp = tmp.split(",")[0]
   return tmp;
  }
  catch(e)
  {
   //
  }
 }

 var xmlhttp = null;

}


function drawtable(sroomlist)  //输出结果
{
 var resultstr = "";
 resultstr += "<table border=1 width=\"100%\">";
 for(var i = 0 ;i< sroomlist.length;i++)
 {
  resultstr += "<tr bgcolor=\"#00ccff\">";
  resultstr += "<td>" + sroomlist[i][1] + "版</td>";
  resultstr += "</tr>";

  resultstr += "<tr>";
  resultstr += "<td>";

  resultstr += "<table width=\"100%\"  border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#cccccc\">";
  
  resultstr += "<tr>";

  resultstr += "<td>版主</td>";
     resultstr += "<td>参与的帖子</td>";
  resultstr += "<td>得分的帖子</td>";

  
  resultstr += "</tr>";
  var smallroomid = sroomlist[i][0].substr(8,sroomlist[i][0].length)
  var smallmasterlist = getsmallmasterlist(xmldoc,smallroomid)
  for(var j = 0;j <smallmasterlist.length;j++)
  {
   if(smallmasterlist[j]=="我要申请")
    continue;
   resultstr += "<tr>";
   resultstr += "<td>" + smallmasterlist[j] + "</td>";
   resultstr += "<td>" + gettopicslist(smallmasterlist[j],smallroomid,"2","12","2003") + "</td>";

本文关键:javascript xmlhttp dom
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top