仅在用户使用URL查询时显示DIV

时间:2014-07-10 01:11:15

标签: javascript jquery

我想只在用户输入网址中的查询时才显示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>

为什么?

1 个答案:

答案 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();

Fixed JSFiddle