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

ASP.NET
ASP.NET开发:简化应用程序的开发支持Web标准
asp.net XMLHttpRequest实现用户注册前的验证
asp.net 页面间传值方法小结
asp.net url重写浅谈
asp.net 验证码生成和刷新及验证
C#精髓 GridView72大绝技 学习gridview的朋友必看
实例说明asp.net中的简单角色权限控制
asp.net网站开发包wq.dll打包下载
js与ASP.NET 中文乱码问题
asp.net checkbox 动态绑定id GridView删除提示
asp.net TextBox回车触发事件 图片在img显示
asp.net 脏字典过滤问题 用正则表达式来过滤脏数据
asp.NET 脏字过滤算法
asp.NET 脏字过滤算法 修改版
asp.net sql 数据库处理函数命令
asp.net Javascript 的几种写法与提示
ASP.NET MVC学习笔记
asp.net 中国身份证号码验证代码 非正则
Asp.net中使用Sqlite数据库的方法
asp.net 中文字符串提交乱码的解决方法

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


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