木子屋 Dnawo's BLOG

静态页面也玩参数

👤 dnawo 📅 2006-12-27 👁 9097 👍 0 💬 0 🔄 来源:本站原创
众所周知,通过地址可以给动态页面传递参数,例如http://www.mzwu.com/article.asp?id=516表示向article.asp页传递一个参数id,其值为516,article.asp可以通过其值进行相应的操作

出于好奇想编写一个运行于静态页面的万年历,都是运行于客户端的脚本,就要求静态页面也可以接受参数,例如:http://www.mzwu.com/w.htm?iYear=2007&iMonth=1。可是客户端脚本并没有提供像ASP的Request对象Querystring一样的方法,那就只能自己写一个函数来实现了

HTML
<script language="VBScript">
Dim iYear,iMonth
Sub getPar()
	Dim temp,i,j,k,l
	temp = document.location.href
	if instr(temp,"?") = 0 then
		iYear = year(date())
		iMonth = month(date())
	else
		i = len(temp)
		j = instr(temp,"=")
		k = instr(temp,"&")
		l = instrRev(temp,"=")
		iYear = mid(temp,j+1,k-j-1)
		iMonth = right(temp,i-l)
	end if
End sub
'Call getPar()后iYear,iMonth并有值了
</script>


这段脚本只适用于本万年历,这边只提供一个思路,有兴趣的朋友可以试着写写。下边是相关的另外几个子过程:

1.列出地址中所有参数:

HTML
<script language="VBScript">
Sub Request()
	Dim url,arrStr,i
	url = document.location.href
	If instr(url,"?") = 0 then
		Request = ""
	Else
		url = Right(url,Len(url)-Instr(url,"?"))
		arrStr = split(url,"&")
		For i=0 to UBound(arrStr)
			document.write("第" & i+1 & "个参数:" & split(arrStr(i),"=")(0) & "=" & split(arrStr(i),"=")(1) & "<br/>")
		Next
	End If
End Sub
'Call Request()
</script>


2.取得参数值,类似于request.querystring("argname")

VBScript版:
HTML
<script language="VBScript">
Function Request(argname)
	Dim url,arrStr,i
	url = document.location.href
	If instr(url,argname & "=") = 0 then
		Request = ""
	Else
		url = Right(url,Len(url)-Instr(url,"?"))
		arrStr = split(url,"&")
		For i=0 to UBound(arrStr)
			If Instr(arrStr(i),argname & "=")>0 Then
				Request = Replace(arrStr(i),argname & "=","")
			End If
		Next
	End If
End Function
'使用Request("argname")即可得到参数值
</script>


JavaScript版:
HTML
<script language="JavaScript">
function Request(argname)
{
	var url = document.location.href;
	var arrStr = url.substring(url.indexOf("?")+1).split("&");
	//return arrStr;
	for(var i =0;i<arrStr.length;i++)
	{
		var loc	= arrStr[i].indexOf(argname+"=");

		if(loc!=-1)
		{
			return arrStr[i].replace(argname+"=","").replace("?","");
			break;
		}
		
	}
	return "";
}
//使用Request("argname")即可得到参数值;
</script>

评论(0)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 一个简单的万年历 下一篇 → 从字符串中查找字符出现次数的方法和性能对比