从URL获取参数并在字典中使用它

时间:2018-04-16 08:24:35

标签: javascript html

我基本上有0次编程经验。所以这是我的问题。我正在使用JS从URL获取一些参数并将其与HTML一起使用,并且它可以工作。

这是代码:

function qs(search_for) {
    var query = window.location.search.substring(1);
    var parms = query.split('&');
    for (var i=0; i<parms.length; i++) {
        var pos = parms[i].indexOf('=');
        if (pos > 0  && search_for == parms[i].substring(0,pos)) {
            return parms[i].substring(pos+1);;
        }
    }
    return "";
}

和HTML

<script type="text/javascript">document.write(qs("name"));</script>

现在,假设我想使用参数的值在页面上生成特定的文本。但是我不想使用Parameter本身,而是使用一种Dictionary来将Parameter与String匹配。

例如 a1:“早上好” b2:“晚上好”

我尝试过这样的事情,没有成功,有人能帮忙吗?:

function qs(search_for) {
   var dict = {}
   dict[a1] = "Good morning";
   dict[b2] = "Good evening";

     var query = window.location.search.substring(1);
     var parms = query.split('&');
     for (var i=0; i<parms.length; i++) {
         var pos = parms[i].indexOf('=');
         if (pos > 0  && search_for == parms[i].substring(0,pos)) {
             if parms[i].substring(pos+1) in dict {
                return dict[parms[i].substring(pos+1)];;
             }
         }
     }
     return "";
 }

提前致谢! →

编辑:为了清楚起见,我不想读取参数“a1”和“b2”。我宁愿想要当某个参数等于“a1”时该函数返回“早上好”,当某个参数等于“b2”时,该函数返回“晚上好”

2 个答案:

答案 0 :(得分:1)

你这样做:

function getParam(param){
  var both = location.search.replace('?', '').split('&');
  for(var i=0,a,l=both.length; i<l; i++){
    a = both[i].split('=');
    if(a[0] === encodeURIComponent(param)){
      return decodeURIComponent(a[1]);
    }
  }
  return undefined;
}
var useInDict = getParam('a1');

假设原始网址编码。

答案 1 :(得分:0)

function parseGETfromUrl ( query = location.search.substring( 1 ) ) {
    let parameters = {};
    for ( const [ name, value ] of new URLSearchParams( query ) ) parameters[name] = value;
    return parameters;
}

//Test code
let paramsString = "q=URLUtils.searchParams&topic=api";
parseGETfromUrl( paramsString ); // { q: "URLUtils.searchParams", topic: "api" }
parseGETfromUrl(); //Same result as above, when url ends with "?q=URLUtils.searchParams&topic=api"

标题函数parseGETfromUrl返回一个包含url查询字符串信息的对象。