2017-02-26 58 views
0

我试图添加一些自定义内容到页面,如果我选择通过url添加1或2个变量。问题是我的函数只能在两个字符串都被传递的情况下工作,而不是如果我只选择使用1.我想要这个选项。 2串传递是“rescompany”和“区域”的问题在jQuery中通过URL传递1或2个查询字符串

重:index.html?locale=someplace&rescompany=Google

$(document).ready(function() { 
     function getUrlVars() { 
     var vars = [], 
      hash; 
     var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
     for (var i = 0; i < hashes.length; i++) { 
      hash = hashes[i].split('='); 
      vars.push(hash[0]); 
      vars[hash[0]] = hash[1]; 
     } 
     return vars; 
     } 

     if (document.location.search.length) { 
     var rescompany = getUrlVars()["rescompany"]; 
     var locale = getUrlVars()["locale"]; 

     if ((rescompany).length > 0) { 
      $(".addtores").css('visibility', 'visible'); 
      $(".resname").append(decodeURIComponent(rescompany)); 
     } 
     if ((locale).length > 0) { 
      $(".introduction strong span").css('display', 'inline-block'); 
     } 
     } 

回答

0

如果我运行代码,我收到以下错误信息:TypeError: rescompany is undefined(查看错误信息在您的浏览器)

这意味着如果测试(rescompany).length > 0是错误的。这应该被替换为rescompany !== undefined

所以,你的代码应该成为这样的事情:

$(document).ready(function() { 
    function getUrlVars() { 
    var vars = [], 
     hash; 
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
    for (var i = 0; i < hashes.length; i++) { 
     hash = hashes[i].split('='); 
     vars.push(hash[0]); 
     vars[hash[0]] = hash[1]; 
    } 
    return vars; 
    } 

    if (document.location.search.length) { 
    var vars = getUrlVars(); 
    var rescompany = vars["rescompany"]; 
    var locale = vars["locale"]; 

    if (rescompany !== undefined) { 
     $(".addtores").css('visibility', 'visible'); 
     $(".resname").append(decodeURIComponent(rescompany)); 
    } 
    if (locale !== undefined) { 
     $(".introduction strong span").css('display', 'inline-block'); 
    } 
    } 
}); 
+0

你钉它 - 我错过了逻辑的一部分。谢谢你的澄清! – darnen

+0

如果解决了您的问题,请始终标记答案为正确。所以,大家都知道问题解决了。 – m7913d

相关问题