2014-07-10 54 views
1

我只想在用戶輸入URL中的查詢時才顯示div。我有以下代碼:如果用戶使用URL查詢,則只顯示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>

爲什麼?

+2

如果它工作在小提琴,而不是你的服務器,我們如何告訴有什麼不對? – elclanrs

回答

1

您的JS代碼不會解碼URL參數值。 Following code解碼URL參數正確

// 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

相關問題