2016-04-29 78 views
0

我想获得ULR参数,但我的代码不运行,因为在调试时显示我的错误是:Cannot read property 'split' of undefined 我不知道我在做什么错误。 例如:default.html?pid=405我需要获取JavaScript变量405的值。这是我正在使用的代码:使用Javascript获取URL参数

<script type="text/javascript"> 
    function getUrlParameters(parameter, staticURL, decode) { 
     var currLocation = (staticURL.length) ? staticURL : window.location.search, 
      parArr = currLocation.split("?")[1].split("&"), 
      returnBool = true; 

     for (var i = 0; i < parArr.length; i++) { 
      parr = parArr[i].value.split("="); 
      if (parr[0] == parameter) { 
       return (decode) ? decodeURIComponent(parr[1]) : parr[1]; 
       returnBool = true; 
      } else { 
       returnBool = false; 
      } 
     } 

     if (!returnBool) return false; 
    } 
</script> 

<script type="text/javascript"> 
    function runDepo() 
    { 
     var idParameter = getUrlParameters("pid", "", true); 
    } 

有人可以帮助我吗?提前致谢。

+0

哪条线是抛出该错误删除.value? –

+0

可能重复的[如何在JavaScript中获取查询字符串值?](http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript) – Aeolingamenfel

+0

parr = parArr [I] .value.split( “=”); – Lanshore

回答

2

刚刚从parr = parArr[i].value.split("=");

function getUrlParameters(parameter, staticURL, decode) { 
 
     var currLocation = (staticURL.length) ? staticURL : window.location.search, 
 
      parArr = currLocation.split("?")[1].split("&"), 
 
      returnBool = true; 
 

 
     for (var i = 0; i < parArr.length; i++) { 
 
      parr = parArr[i].split("="); 
 
      if (parr[0] == parameter) { 
 
       return (decode) ? decodeURIComponent(parr[1]) : parr[1]; 
 
       returnBool = true; 
 
      } else { 
 
       returnBool = false; 
 
      } 
 
     }; 
 

 
     if (!returnBool) return false; 
 
    }; 
 
    
 
    document.getElementById('Result').value = getUrlParameters("pid", "default.html?pid=405", true); 
 

 
    alert(getUrlParameters("pid", "default.html?pid=405", true));
PID : <input type="text" id="Result" placeholder="Result">

+0

我试过这个,但是我应该编写这个'alert(getUrlParameters(“pid”,“default.html?pid = 405”,true));'有没有什么办法不必编写它? – Lanshore

+0

@Lanshore不,它只是用于测试功能,但你想在哪里显示结果? –

+0

发布这个答案,我不能回答自己,我自己解决它。 – Lanshore