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

ASP.NET
一个无刷新效果定时自动更新页面的例子
ASP.NET2.0的控件状态和视图状态探讨
用好ASP.NET 2.0的URL映射
详解:如何在.NET中访问MySQL数据库?
如何实现Asp与Asp.Net共享Session
利用.net的强大功能发送email
.NET中加密与解密QueryString的方法
Asp.net生成htm静态文件的两种途径
C#定时器的使用
从XML文件中读取数据绑定到DropDownList
ASP.NET 2.0 里输出文本格式流
用.net动态创建类的实例
.Net下的MSMQ的同步异步调用
ASP.NET 2.0实现防止同一用户同时登陆
asp.NET自定义服务器控件内部细节
组合.NET数据控件构建强大用户接口
用ASP.NET 2.0 FormView控件控制显示
菜鸟也学习ASP.NET如何读取数据库内容
教你简单方便获取Web设计的免费资源
专家详解:复杂表达式的执行步骤

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-11   浏览: 62 ::
收藏到网摘: 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>