我想只在用户输入网址中的查询时才显示div。我有以下代码:
HTML
<div id="hidden" style="width:100%;height:20%;background-color:blue;display:none;">
Hidden Div Contents
</div>
JS
$(function() {
var params = {};
var ps = window.location.search.split(/\?|&/);
for (var i = 0; i < ps.length; i++) {
if (ps[i]) {
var p = ps[i].split(/=/);
params[p[0]] = p[1];
}
}
var divToShow = params.from;
$('#'+divToShow).show();
});
JSFiddle - http://jsfiddle.net/b48zL/
链接以查看是否有效 - http://jsfiddle.net/b48zL/show/?from=hidden
问题
它似乎在小提琴上正常运行,但在我的服务器上,它使用div中打印的脚本中的文本呈现或不使用查询来呈现div。
即,看起来我编码:
<div>$(function() { ... ...$('#'+divToShow).show();});</div>
为什么?
答案 0 :(得分:1)
您的JS代码不会解码URL参数值。 Following code正确解码网址参数
// based on https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript
var urlParams = {};
(function () {
var e,
a = /\+/g, // Regex for replacing addition symbol with a space
r = /([^&=]+)=?([^&]*)/g,
d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
q = window.location.search.substring(1);
while (e = r.exec(q))
urlParams[d(e[1])] = d(e[2]);
})();
if(urlParams.from) $("#hidden").show();