2013-07-26 98 views
1

从本质上讲,我完全新的PHP - 使用Dreamweaver CS6(它的一切我都)PHP如何显示隐藏DIVS基于查询字符串值

我得查询字符串(someurl的价值。 COM/ID =东西)。 我得到的价值后,我需要显示一个基于ID的div。

虽然我知道真的没有任何真正的“页面加载”事件的PHP,我想要打开页面时它。

那么,我该如何做到这一点?

我开始用这样的:

<?php 
    $stringId = $_GET['id'] 
    ?> 

    <script language="javascript">  
     document.getElementById('$stringId').style.display = "block"; 
    </script> 
    <? 
?> 

因为我没有一台服务器的设置,将这样的工作? 你会建议别的吗? 我完全错了吗?

任何输入,将不胜感激。 谢谢。

+5

退房WAMP,XAMP等,并得到一个测试环境去。你需要一个... –

+0

尝试使用jquery slideToggle() –

+0

1)我在做这个工作,我必须让IT为我做,但我会尝试。 (谢谢) 2)jquery slideToggle() - 我会检查出来。 (谢谢) –

回答

2

您应该设置内联样式,而不依赖于JavaScript,因为某些用户可能已关闭了javascript。

<div <?php if($_GET['id'] == 'X'){ ?>style="display: block;"<?php } ?>> 
    your div content 
</div> 

与其他的要求

<div style="<?php if($_GET['id'] == 'X'){ ?>display: block;<?php } else { ?>display: none;<?php } ?"> 
    your div content 
</div> 

你也可以使用一个预先定义的CSS类

根据您关于有办法很多做一个开关评论,如果您需要混了只需插入此

<script language="javascript">  
    document.getElementById('<?php echo $_GET['id']; ?>').style.display = "block"; 
</script> 
+0

嗯...也许... –

+0

如果我们有一个“其他”在那里呢?就像一个好奇心...... –

2

它应该是这样的:

<?php 
switch($_GET['id']) { 
    case 'asdf': 
     echo '<div>ASDF in QS</div>'; 
     break; 
    case 'bcd': 
     echo '<div class="some-class-because-i-can">something else</div>'; 
} 

你不能简单地将JavaScript与PHP混合。

当然,您需要服务器设置,建立在php(http://php.net/manual/en/features.commandline.webserver.php)服务器应足以满足您的需求。

+0

有太多的事情要做,但这是一个很酷的想法。 –

+1

我可能不得不将它用于我正在考虑的其他内容......所以,感谢您收集这些内容。 :-) –

0

是的,你可以在javascript/jquery中引用php变量。确保在你的代码中放入一个echo语句。

<?php 
     if(is_numeric($_GET['id'])) $stringId = $_GET['id']; 
     // good eye Agares 
    ?> 

    <script language="javascript">  
     document.getElementById('<?php echo $stringId; ?>').style.display = "block"; 
    </script> 
    <? ?> 

这应该可以正常工作。

虽然我建议使用jQuery显示/隐藏。 jQuery通常更加灵活。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" > 
</script> 
<script> 
$(document).ready(function() { 

     $('#<?php echo $stringId; ?>').show(); 
    } 
</script> 
+0

我不会推荐这样做,因为: a)javascript(不需要)开销 b)如何转义该值? – Agares

+0

@ Agares gooooood眼睛! xss漏洞数日!我会在逃跑中编辑! – XaxD

2

PHP是服务器端的脚本语言,这意味着它只能运行在服务器(任何输出所呈现的用户屏幕上),这就是说,你需要一个本地服务器像WAMP XAMP调试/运行代码上。

你试图做的是不会工作正如我前面提到的那样,PHP在服务器上执行,并且Javascript在浏览器中运行,当您的JavaScript代码运行时,变量$ stringID不会出现。

当PHP可以渲染该元素并仅显示该元素时,为什么还要隐藏具有url ID的元素。

<?php 
    if(isset($_GET['id'])) { //checks weather the link has data in the id field 
     $stringId = $_GET['id']; 

     echo "<div> content here </div>"; //anything you echo will be rendered in the 
             //pages source code be it HTML, Javascript etc. 
    } 
>? 

如果不想从jQuery的刷新页面使用AJAX(google一下:d)来从PHP这个数据

+0

你提出了一个很好的观点。但是我的每个div都有多达15行的信息,而我有大约20个div。这将需要永远,大声笑。这就是为什么我想这样做的原因。但是,嘿,这给了我另一个页面我有另一个想法 - 所以谢谢你! :-) –