我想将一段网页路径的参数打包成类的形式
譬如  如下的路径 “file:///C:/Users/Ghostalker/Desktop/b/d.htm?username=12abc&pwd=123”username=12abc&pwd=123  我视为传入这个页面的参数。
我编写了下面一段代码
(function()
{
var argv_strnjr="";
argv_strnjr=window.location.search;
document.argv=new Object();
document.argv["argc"]=0;
if(argv_strnjr==""){
return -1;
} try{
argv_strnjr.replace("?",""); /////  关键在这里
var argArray=argv_strnjr.split("&");
if(argArray.length>0)
{
for(i=0;i<argArray.length;i++)
{
var name_value_array=argArray[i].split("=");
eval("document.argv[\""+name_value_array[0]+"\"]=\""+name_value_array[1]+"\"");
document.argv.argc++;
}
}
else{return -1;}
}catch(e)
{}
}
)();在上面的  window.location.search 中返回的是 包括 问号(?) 在内的一段字符串 本例中表示为 “?username=12abc&pwd=123  ”
我想用正则表达式的形式将这个问号去掉  就是用了 string 类型的 replace方法  
尝试过
var regtmp=/\?/g;
argv_strnjr.replace(regtmp,""); 
但是再用firebug调试 发现这里无论如何都不能被替换掉
但是 在 w3schools网站中的测试环境里面 都能很好的运行,谁知道

解决方案 »

  1.   

    alert(window.location.search) 看一下, 本地地址和http://的有不同吧
      

  2.   


     <script >
    (function()
    {
        var argv_strnjr="";
        argv_strnjr=window.location.search;
    alert(argv_strnjr);
        document.argv=new Object();
        document.argv["argc"]=0;
        if(argv_strnjr==""){
            return -1;
        }    try{
        argv_strnjr = argv_strnjr.replace("?",""); /////  关键在这里,你替换掉之后返    回的值必须赋给它啊
        alert(argv_strnjr);
        var argArray=argv_strnjr.split("&");
        if(argArray.length>0)
        {
            for(i=0;i<argArray.length;i++)
            {
            var name_value_array=argArray[i].split("=");
            eval("document.argv[\""+name_value_array[0]+"\"]=\""+name_value_array[1]+"\"");
            document.argv.argc++;
            }
        }
        else{return -1;}
        }catch(e)
        {}
    }
    )();
    </script>
      

  3.   

    关键就在
     argv_strnjr = argv_strnjr.replace("?",""); /////  关键在这里
    因为replace函数是不会改变原字符串的值的,所以你必须将返回的值赋值给原来的变量,这样比较兼容些
      

  4.   


    var reg = /\?/g;
    alert("index.html?username=12abc&pwd=123".replace(reg," "));