用javascript文件传递参数,并在此文件中获取相关参数的值

无意中看到有人提得:用javascript文件传递参数,并在此文件中获取相关参数的值
在网上搜索了一下,有人提出用如下方法:

var param = document.scripts[document.scripts.length-1].src;
此方法可以获得此JS文件的地址及其参数

var param =document.getElementsByTagName("script")[document.getElementsByTagName("script").length-1].src.split("?")[1]
此方法可以获得此JS文件的参数部分

综合以前利用js方法实现html静态页面间参数传递的方法,更改如下变可以实现:
var request = {
  QueryString : function(val){ 
    var param ="?"+document.getElementsByTagName("script")[document.getElementsByTagName("script").length-1].src.split("?")[1]
    var re = new RegExp("" +val+ "=([^&?]*)", "ig");
    return ((param.match(re))?(param.match(re)[0].substr(val.length+1)):null);
  }
}  

参数值的获取:request.QueryString("参数名称")

此方法是前面所学的一种灵活运用,和ASP文件获取参数的一样,容易掌握。

 


另外也有人提到用如下方法来获取(个人认为太复杂):
var getArgs=(function(){
    var sc=document.getElementsByTagName('script');
    var paramsArr=sc[sc.length-1].src.split('?')[1].split('&');
    var args={},argsStr=[],param,t,name,value;
    for(var ii=0,len=paramsArr.length;ii<len;ii++){
            param=paramsArr[ii].split('=');
            name=param[0],value=param[1];
            if(typeof args[name]=="undefined"){ //参数尚不存在
                args[name]=value;
            }else if(typeof args[name]=="string"){ //参数已经存在则保存为数组
                args[name]=[args[name]]
                args[name].push(value);
            }else{  //已经是数组的
                args[name].push(value);
            }
    }
    /*在实际应用中下面的showArg和args.toString可以删掉,这里只是为了测试函数getArgs返回的内容*/
    var showArg=function(x){   //转换不同数据的显示方式
        if(typeof(x)=="string"&&!//d+/.test(x)) return "'"+x+"'";   //字符串
        if(x instanceof Array) return "["+x+"]" //数组
        return x;   //数字
    }
    //组装成json格式
    args.toString=function(){
        for(var ii in args) argsStr.push(ii+':'+showArg(args[ii]));
        return '{'+argsStr.join(',')+'}';
    }
    return function(){return args;} //以json格式返回获取的所有参数
})();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值