2012-07-11 129 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