白菜世紀-RSS無重新整理彙總器(1221修正)

來源:互聯網
上載者:User
聲明:下面的所做的修改只是為了與“劍心通明”共同學習這個程式,並無修改原文代碼的意思。

我把原來代碼中,無關核心的部分做了注釋。這樣,看代碼就容易了。如下:
=================================================
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>白菜世紀-RSS無重新整理彙總器(1221修正)</title>

<script language="JavaScript" type="text/javascript">
<!--
//載入變灰
function listen(a){
// document.getElementById('prolist').className=a;
}
function btnSty(objId,objStyle)
{
// document.getElementById(objId).style.display = objStyle;
}
//提示視窗控制
function ifodis(){
// btnSty('loadifo','none');
}
function settime(a){
// setTimeout(a,1000);
}
function loadtime(){
// loadifo.innerHTML += "."
}
//以上幾個函數可以全部刪除;

//XML資料繫結
var xmldoc = false;
function loadrss(n){
// listen('mainbg2');
//產生隨機數,同時限制重新整理次數
  var Num=Math.floor(Math.random()*100);
//定義往址參數
  url = n+"?id="+Num;
//定義為非同步傳輸模式
  xmldoc = false;
//Mozill,Safari等瀏覽器時需要建立的XMLHttp類
  if(window.XMLHttpRequest){
    xmldoc = new XMLHttpRequest();
    if(xmldoc.overrideMimeType){
        xmldoc.overrideMimeType('text/xml');
    }
  }
//IE瀏覽器時建立的XMLHttp類
  else if(window.ActiveXObject){
    try{
      xmldoc = new ActiveXObject("Msxml3.XMLHTTP");
    }
    catch(e){
      try{
        xmldoc = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch(e){
        try{
          xmldoc = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e){}
      }
    }
  }
//不能建立XMLHTTP類時返回
  if(! xmldoc){
    return false;
  }
//調用CheckState函數
  xmldoc.onreadystatechange = CheckState;   //如果不檢查狀態,可以不要。
  xmldoc.open('GET',url,true);
  xmldoc.send(null);
}
//狀態檢測
function CheckState(){

//這個函數檢查串連伺服器的狀態,並在文本中間顯示一個狀態框

  var response = xmldoc.responseXML.documentElement;
//  btnSty('loadifo','block')
//收到完整的伺服器響應
  if(xmldoc.readyState == 1){
   // loadifo.innerHTML = "串連伺服器"
    }
  else if(xmldoc.readyState == 2){
   // loadifo.innerHTML = "開始載入資料"
    }
  else if(xmldoc.readyState == 3){
   // loadifo.innerHTML = "正在載入資料"
    settime(loadtime)
    }
  else if(xmldoc.readyState == 4){
//HTTP伺服器響應值成功
    if(xmldoc.status == 200){
//將伺服器返回的字串寫到頁面中ID為showdiv的地區
//loadifo.innerHTML = "載入完成"
//     settime(ifodis);

//調用NUM函數,原文作者寫JS代碼也喜歡丟分號,這裡補上。^O^
    num(response);  //注意:通過調用NUM函數來顯示文章列表
    }
    else{
     // loadifo.innerHTML = "錯誤"+xmldoc.status+"點這裡重新整理";
    }
  }

}

//記錄集總數
function num(b){

  try{
  var titleNode = b.selectNodes("//rss/channel/title");
  var a = b.getElementsByTagName("item").length
// titleV = titleNode(0).firstChild.nodeValue;
// listnum.innerHTML = "共有"+a+"篇文章 來源於:"+titleV;   //以上統計文章篇數

  setlist(a,b);   //調用顯示函數。
  }
  catch(e){}
}

//  if (top.location != self.location)top.location=self.location;  //這是不被架構

//節目列表顯示
//定義接收指向各個元素的節點資訊的變數
var titleNode,linkNode,categoryNameNode,authorNode,pubDateNode,descriptionNode
//定義接收元素值的變數
var titleV,linkV,categoryNameV,authorV,pubDateV,descriptionV
//分類彙總
function setlist(a,b)
{
  var prograNode = b.getElementsByTagName("item");
  var adminlinkNode = b.selectNodes("//rss/channel/link");
  var titleNode = b.selectNodes("//rss/channel/item/title");
  var linkNode = b.selectNodes("//rss/channel/item/link");
  var categoryNode = b.selectNodes("//rss/channel/item/category");
  var authorNode = b.selectNodes("//rss/channel/item/author");
  var pubDateNode = b.selectNodes("//rss/channel/item/pubDate");
  var descriptionNode = b.selectNodes("//rss/channel/item/description");
  var category2sNode = b.selectNodes("//rss/channel/item/dc:subject");
  var author2sNode = b.selectNodes("//rss/channel/item/dc:creator");
  var pubDate2sNode = b.selectNodes("//rss/channel/item/dc:date");
  var listchar=""
//使用for迴圈,產生列表資訊
  for (i=0; i<a; i++)
  {
//下面的代碼,測試RSS的內容是否可用,不是必需的
    try{titleV = titleNode(i).firstChild.nodeValue;}
    catch(e){titleV = "沒有可用資訊"}
    try{linkV = linkNode(i).firstChild.nodeValue;}
    catch(e){linkV = "沒有可用資訊"}
    try{categoryV = categoryNode(i).firstChild.nodeValue;}
    catch(e){
      try{categoryV = category2sNode(i).firstChild.nodeValue;}
      catch(e){categoryV = "沒有可用資訊"}
    }
    try{authorV = authorNode(i).firstChild.nodeValue;}
    catch(e){
      try{authorV = author2sNode(i).firstChild.nodeValue;}
      catch(e){authorV = "沒有可用資訊"}
    }
    try{pubDateV = pubDateNode(i).firstChild.nodeValue;}
    catch(e){
      try{pubDateV = pubDate2sNode(i).firstChild.nodeValue;}
      catch(e){pubDateV = "沒有可用資訊"}
    }
    try{descriptionV = descriptionNode(i).firstChild.nodeValue;}
    catch(e){descriptionV = "沒有可用資訊"}

//這裡就是顯示的形式了,用table 還是用 div 來顯示,你自己看吧。
    adminlinkV = adminlinkNode(0).firstChild.nodeValue;

    //將得到的元素值裝載到產生表格的字串中
    //每產生一行元素,在首儲存格內添加函數showmore(),並將序號作為參數傳入
    listchar += "<h5><a href='"+linkV+"' target='_blank'>"+titleV+"</a></h5><span>發表時間:"+pubDateV+"</span><div class='article'>"+descriptionV+"</div><div class='bottom'>文章分類:"+categoryV+" <a href='"+adminlinkV+"' target='_blank'>作者:"+authorV+"</a></div>";
  }
  //將產生的表格輸出到頁面的DIV元素
  prolist.innerHTML = listchar;    //注意這個語句,在id=prolist處插入一行

//  listen('mainbg')   ;//  
}
// -->
</script>

<!--白菜JS2   以下到   "白菜修改核心演算法End "     可以全部不要-->
<script language="JavaScript">
/*這個顯示左邊的菜單,不是必需的
<!--
if (document.images){
t_sub=new Image
tsub=new Image
tsub_e=new Image //t_sub_end.gif備用圖片
t_plus=new Image
tplus=new Image
tplus_e=new Image
t_open=new Image
t_close=new Image

t_sub.src="images/t_sub.gif";
tsub.src="images/t_sub_begin.gif";
tsub_e.src="images/t_sub_end.gif"; //t_sub_end.gif備用圖片
t_plus.src="images/t_plus.gif"
tplus.src="images/t_plus_begin.gif"
tplus_e.src="images/t_plus_end.gif"
t_open.src="images/open.gif"
t_close.src="images/close.gif"

}
*/
//白菜修改核心演算法Begin
function showdiv(num)

{
/*菜單收、放,不是必需的
  var imagename
  var name
  var total
  if (document.all("subtree"+num).style.display=="none" )
  {       
        document.all.item("subtree"+num).style.display=""

        if(num<2)
        {
        document.all.item("image"+num).src=tsub.src       
        }
        else{
        document.all.item("image"+num).src=t_sub.src       
        }
        document.all.item("img"+num).src=t_open.src
  }
  else
  {
        document.all.item("subtree"+num).style.display="none"

        if(num>12)
        {
        document.all.item("image"+num).src=tplus_e.src       
        }
        else if(num<2)
        {
        document.all.item("image"+num).src=tplus.src       
        }
        else
        {
        document.all.item("image"+num).src=t_plus.src
        }
        document.all.item("img"+num).src=t_close.src
  }
  */
}

//白菜修改核心演算法End
//-->
</script>

</head>
<body onload="loadrss('http://rss.xinhuanet.com/rss/native.xml');">
<!--注意這裡,由setlist ()函數中的顯示方式決定,這裡的ID被setlist()引用-->
<div class="body">

  
  <!--di v class="main" id="main"  不是必須        -->
    <!--di v class="maintit" id="listnum" > </ d iv  顯示 統計資料--->
    <!--di v class="nonetab"></div  -->
    <!--xm l i  d="xml_file"></x  ml  -->

    <div class="mainbg" id="prolist">
    </div>

  <!--/di v  -->

  </div>
</body>
</html>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.