日期:2014-05-16  浏览次数:20358 次

认识Javascript中Location对象(二)以及如何获取URL中的查询字符串的值和获取网页的名称

给一个URL示例信息为参考:

http://www.609.cn:80/news/index.aspx?id=1&name=location#top


一、需求是获取URL中查询字符串的值。什么是查询字符串,我的前一篇博客中提及过,就是Location对象的search属性的值,在这里指?id=1&name=location


大家熟悉ASP.NET都知道怎么取这样的数据集合,就像在ASP.NET中的超链接传值,然后在另外一个页面获取其中的查询字符串一样。

ASP.NET中使用Request对象的QueryString数据集合来获取URL中查询字符串的值

比如这里:Request.QueryString("id")就能获取id所代表的值


那么用Locaton对象结合String对象的方法怎么获取呢?可以用下面这个通用的函数获取:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获取URL中查询字符串的值</title>
</head>

<body>
<script type="text/javascript">
var querystring = function(){//获取URL查询字符串参数值的通用函数
var q = window.location.search.substring(1);//获取查询字符串,即"id=1&name=location"的部分
var a = q.split("&");//以&符号为界把查询字符串分割成数组
var b = {};//定义一个临时对象
for(var i=0;i<a.length;i++)//遍历数组
{
	var c = a[i].indexOf("=");//获取每个参数中的等号小标的位置
	if(c==-1) continue;//如果没有发现测跳到下一次循环继续操作
	var d = a[i].substring(0,c);//截取等号前的参数名称,这里分别是id和name
	var e = a[i].substring(c+1);//截取等号后的参数值
	b[d] = e;//以名/值对的形式存储在对象中
	}
	return b;//返回对象
}
var f = querystring();//调用查询字符串函数
for(var i in f){
alert(i+"="+f[i]);
}
</script>
</body>
</html>

二、取网页的名称和文件的扩展名

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>取网页的名称和文件的扩展名</title>
</head>

<body>
<script type="text/javascript">
var p = location.pathname;//获取当前URL的路径
var n = p.substring(p.lastIndexOf("/")+1);//获取网页名称
var c = p.substring(p.lastI