当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net+js实时奥运金牌榜代码

ASP.NET
为T-SQL添加intellisense功能
SQL Server 2005安装过程中出现错误的解决办法
SQL Server 2005 RTM 安装错误 :The SQL Server System Configuration Checker cannot be executed due to
有关于JSON的一些资料
不能忽略c#中的using和as操作符的用处
JavaScript系列之―同步还是异步?
获取远程网页的内容之一(downmoon原创)
获取远程网页的内容之二(downmoon原创)
ASP.Net中防止刷新自动触发事件的解决方案
asp.net下用js实现鼠标移至小图,自动显示相应大图
Asp.Net 和 AJAX.Net 的区别
提交页面的定位--scrollIntoView的用法
利用AJAX与数据岛实现无刷新绑定
asp.net下判断用户什么时候离开,以什么方式离开
DataSet 添加数据集、行、列、主键和外键等操作示例
读写xml所有节点个人小结 和 读取xml节点的数据总结
收藏的asp.net文件上传类源码
asp.net下GDI+的一些常用应用(水印,文字,圆角处理)技巧
一个可以让.net程序在非WIN平台上运行的软件Mono
使用ASP.NET 2.0 CSS 控件适配器生成CSS友好的HTML输出

ASP.NET 中的 asp.net+js实时奥运金牌榜代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-11   浏览: 168 ::
收藏到网摘: n/a

运期间,公司交给我一个任务,在公司主页上放上奥运金牌榜的排名,之前的实现方式是采用ajax
复制代码 代码如下:
复制代码 代码如下:

<div id="gold">
<p>截止到9月09日09:46为止,<a href="http://2008.baidu.com/olympic/medal/list" target="_blank">北京奥运金牌榜</a>前五名如下:</p>
<table id="go" cellpadding="2" cellspacing="0">
<tr><th>名次</th><th>国家及地区</th><th>金牌</th><th>银牌</th><th>铜牌</th><th>总计</th></tr>
<tr><td>1</td><td><a href="http://2008.baidu.com/olympic/winner/list/c/203" target="_blank">中国</a></td><td>51</td><td>21</td><td>28</td><td>100</td></tr><tr><td>2</td><td><a href="http://2008.baidu.com/olympic/winner/list/c/116" target="_blank">美国</a></td><td>36</td><td>38</td><td>36</td><td>110</td></tr><tr><td>3</td><td><a href="http://2008.baidu.com/olympic/winner/list/c/50" target="_blank">俄罗斯</a></td><td>23</td><td>21</td><td>28</td><td>72</td></tr><tr><td>4</td><td><a href="http://2008.baidu.com/olympic/winner/list/c/195" target="_blank">英国</a></td><td>19</td><td>13</td><td>15</td><td>47</td></tr><tr><td>5</td><td><a href="http://2008.baidu.com/olympic/winner/list/c/45" target="_blank">德国</a></td><td>16</td><td>10</td><td>15</td><td>41</td></tr>
</table>
</div>

比较下我们要实现的样式:(紫红色部分与上面要偷的数据对应)

实现步骤如下:
1、先读取整个页面的html代码:
复制代码 代码如下:

//用来存放接受到的每一行数据
string content = "";
//接受到的是字节流
Stream str;
//提供向URI标识的资源发送数据和从URI标识的资源接受数据的公共方法
WebClient web = new WebClient();
//从指定的URI中下载数据并打开流
str = web.OpenRead("http://www.baidu.com/s?wd=%B0%C2%D4%CB%BD%F0%C5%C6%B0%F1&lm=0&si=&rn=10&ie=gb2312&ct=0&cl=3&f=1&rsp=0");
//以GB2312编码从字节流中读取数据
StreamReader sr = new StreamReader(str, Encoding.GetEncoding("GB2312"));
//把数据全部读出来
content = sr.ReadToEnd();

2、对其进行过滤和替换只提取我们需要的部分,这部分我正则不行,写得有点乱:
复制代码 代码如下:

Regex r = new Regex(@"<tr><th>名次</th><th>国家及地区</th><th>金牌</th><th>银牌</th><th>铜牌</th><th>总计</th></tr>[\s\S]+?</table>");
Match m = r.Match(content); //匹配字符串
GroupCollection gc = m.Groups;
Regex rb = new Regex("</?(a|A)( .*?>|>)");
string soutput = rb.Replace(gc[0].ToString(), "");
soutput = soutput.Replace("<tr><th>名次</th><th>国家及地区</th><th>金牌</th><th>银牌</th><th>铜牌</th><th>总计</th></tr>", "");
soutput = soutput.Replace("</table>","");
Regex rc = new Regex("<td>[1,2,3,4,5]</td>");
soutput = rc.Replace(soutput,"");

3、这样样式比较难控制,水平也有限,只用JS实现了。
复制代码 代码如下:

<script type ="text/javascript">
window.onload = function(){
var tr_ = document.getElementById("myTable").getElementsByTagName("tr");
var td_;
for(var i = 0;i < tr_.length; i ++){
tr_[i].style.backgroundColor = i%2==0?"#FFF4C7":"#FEEAAE";
if(i > 0){
td_ = tr_[i].getElementsByTagName("td")[0].style.textAlign = "center";
}
if(i == 4){
tr_[4].style.display = "none";
}
}
//第一个单元格居中
}
</script>