2012-07-11 72 views
2

我一直在尋找這SO Post努力瞭解處理查詢字符串。很高興看到所有的答覆。我試圖理解的是,如何進一步提供所提供的查詢字符串實際替換DOM中的對象(如特定的DIV),並將其替換爲另一個DIV(可以隱藏在門外),或者只是替換DIV中的內容。根據查詢字符串替換HTML?

我在網上看到了一些資源,但沒有什麼可以在jsfiddle中正確測試的。 Another post here sort of eludes to this

目標

有一個簡單的頁面展示身體內的單個DIV。 加載頁面時,會顯示DIV和內容。 當使用?q = whatever加載頁面時,該DIV中的內容將被替換爲其他內容。

我的解決方案

爲了有一個DIV dissapea,這是解決第一個問題的基礎上,未來通過查詢字符串,我實現了這個我的網頁上:

if (strrpos($_SERVER['REQUEST_URI'], '/landingpage/index.php?q=1') === strlen($_SERVER['REQUEST_URI']) - strlen('/landingpage/index.php?q=1')) { 
    $style = "display: none"; 
} 
else { 
    $style = "display: inline"; 
} 

然後我把它放在我的DIV中:

<div id="theForm" style="<?php echo $style; ?>"> 
    //Form code here 
</div> 

這讓我至少h如果查詢字符串存在,則清除DIV。

下一步,是不是很清楚,但用一些內容替換它。

添加以下到我原來的PHP:

$thankYou = "<h1>Thank You for signing up</h1>"; 

在第一,如果,並改變了別的一個ELSEIF捕捉非查詢字符串代碼,可能的一些更多的情況下在路上。

所以最終的PHP代碼如下所示:

if (strrpos($_SERVER['REQUEST_URI'], '/landingpage/index.php?q=1') === strlen($_SERVER['REQUEST_URI']) - strlen('/landingpage/index.php?q=1')) { 
    $style = "display: none"; 
    $thankYou = "<h1>Thank You for signing up</h1>"; 
} 
elseif (strrpos($_SERVER['REQUEST_URI'], '/landingpage/index.php') === strlen($_SERVER['REQUEST_URI']) - strlen('/landingpage/index.php')) { 
    $style = "display: inline"; 
    $thankYou = ""; 
} 

然後,它只是一個在PHP中添加的物質呼應將要顯示或隱藏的DIV之前的$三江源變量右出,這對我來說是這樣做的。

+2

在編程中是分裂的任務,小的子任務,並分別解決這些問題是一個好主意。因此,將這個問題分成更小的問題**問一個特定的問題**,這樣就不會看起來像「我有一項任務 - 爲我做」 – zerkms 2012-07-11 00:02:55

+0

@zerkms我覺得這確實是一個單一的問題,這是怎麼回事我根據查詢字符串替換內容,但是如果您覺得這是更重要的任務,請原諒我,這不是我的意圖。 – stebesplace 2012-07-11 00:10:03

+0

@JamesPoulson我發現innerHTML可以作爲一種替代手段添加一些數據。那裏的最後一個答案可能會有所提示。 – stebesplace 2012-07-11 00:11:48

回答

3

這裏的工作的例子,可以幫助你

http://www.fridgefilters.com/refrigerator-ice-and-water-filter-ukf8001.html?cust-title=welcome+stack+overflow

見的JavaScript的細節

主頁上:

<script>writeCustomHeader('cust-title','customHeader')</script> 

附加的文件mss.js:

function returnQueryValue(match) { 
    var query = location.search.substr(1); 
    var pairs = query.split("&"); 
    for(i=0;i<pairs.length;i++){ 
     var name = pairs[i].split("=")[0]; 
     var val = pairs[i].split("=")[1]; 
     if(name==match){ 
      val = unescape(val.replace(/\+/g, " ")); 
      return val; 
     } 
    } 
} 

function writeCustomHeader(match,id) { 
    var newHeader=returnQueryValue(match); 
    if(!newHeader)return; 
    var id = document.getElementById(id); 
    var h1 = document.getElementsByTagName('h1')[0]; 
    if(newHeader.length>0 && id && id!='undefined'){ 
     id.innerHTML=newHeader 
     h1.className=h1.className+" small"; 
     document.getElementById('customHeader').className="block"; 
    } 
} 
+1

嗯,希望不是僞裝廣告;) – 2012-07-11 00:06:36

+0

JavaScript?什麼JavaScript?該網站上有幾十個腳本;哪一個這樣做?(假設它不是PHP,我猜測它是)。 – Daedalus 2012-07-11 00:08:37

+1

@ james ...號碼:) – 2012-07-11 00:10:24