我有一个接受查询字符串作为参数的脚本。该脚本查找提供的字符串(有意写在页面上),并将其替换为url中提供的查询字符串。这完全适用于像“www.website.com/?city="foo”这样的网站的主页,但是当我尝试在内部页面上运行它时,脚本将不会执行交换,这意味着任何具有附加功能的URL深度,例如www.wbsite.com/page/?city=bar
我无法确定导致此功能的原因。
结果应该是这样的:
我定义了函数的内容,例如“我们做服务”(这是在某处写的)
我在网址中提供了查询参数:www.website.com/?city = city
该脚本查找此钩子并将其替换为我提供的字符串,如下所示:
“我们在”+ QS.city +“”
中提供服务结果是:“我们在城市服务。”
(function(){var QS = function () {
var x = {};
var y = window.location.search.substring(1);
var z = y.split("&");
for (var i=0;i<z.length;i++) {
var a = z[i].split("=");
if (typeof x[a[0]] === "undefined") {
x[a[0]] = decodeURIComponent(a[1]).replace(/\+/gi, ' ');
} else if (typeof x[a[0]] === "string") {
var b = [ x[a[0]],decodeURIComponent(a[1]).replace(/\+/gi, ' ')];x[a[0]] = b;
} else {
x[a[0]].push(decodeURIComponent(a[1]).replace(/\+/gi, ' '));
}
}
return x;
}();
if (QS.hasOwnProperty('city')) {
document.body.innerHTML = document.body.innerHTML.replace('We Build Powerful', 'We Build Powerful Websites in ' + QS.city + ' ');
document.body.innerHTML = document.body.innerHTML.replace('Build a Stronger Brand', 'Build a Stronger Brand in ' + QS.city + '');
}
})();
答案 0 :(得分:1)
您正在将代码拆分为&#39;&amp;&#39;这是第一个数组元素与您的整个网址。我建议的最干净,最直观的方法就是在你的第一个&#39;之后简单地取一个子串。
在你的情况下,只需在循环开始之前使用它:
var x = {}; var y = window.location.search.substring(1); y = y.substring(y.lastIndexOf('?') + 1); var z = y.split("&");