在php中隐藏/显示来自url字符串的div

时间:2010-11-23 14:01:31

标签: php url show-hide

一个完整的初学者问题。 我在页面(page2.php)上有大量的div(> 80),我想要打开的是page1.php,点击链接打开page2.php,只显示其中一个div点击了哪个链接。

我有一个基本的工作版本,通过在div中添加一个if else。到目前为止,我只在5个div中完成了这个并且它可以工作,但它似乎也是一种非常有说服力的做事方式。

第1页:

 <a href="page2.php?id=r0101">this is a link</a>

第2页:

<?php 
$divID = $_GET['id'];
?>

<div id="r0101" <? if($divID == r0101): ?>class="show"<? else: ?>class="hidden"<? endif; ?> >

然后应用css类来隐藏或显示div。 是否有可能在页面顶部有一个函数或者其他任何从url获取id的函数,并确定有一个带有该id的div,显示它并隐藏所有其他的?这可能是一件容易的事,但它让我感到难过。

任何帮助非常感谢。 感谢。

4 个答案:

答案 0 :(得分:2)

更不用说div了并且在css上工作(当你转发它以隐藏/显示div)时。 您不仅可以生成标记,还可以生成css样式表。使用类似的(把它放在 你头部的结尾)。让浏览器为您完成工作;)

<style type="text/css">
    div {
        display: none;
    }

    div#<?php echo $_GET['id']; ?>:{
        display: block;
    }
</style>

答案 1 :(得分:1)

$divs = array('r0101', 'r0102', 'r0103');
$divID = $_GET['id'];
foreach($divs as $div)
{
    echo '<div id="'.$div.'" class="';
    if ($div == $divID)
    {
      echo 'show';
    }
    else
    {
        echo 'hidden';
    }
    echo '">';
}

假设我已正确阅读了这个问题,你有一组div(r0101,r0102等),并希望根据你所在的页面只显示其中一个。上面的代码创建了这些div的数组,循环并创建div。如果div与页面url中的div匹配,则div的类为“show”,否则为“hidden”。

答案 2 :(得分:0)

首先,您应该考虑一种使div动态打印的方法。类似的东西:

<?php
for($i = 1; $i <= 80; $i++):
?>
<div id="r<?php print $i; ?>">div contents</div>
<?php
endfor;
?>

此外,如果您找到了上述方法,您还可以执行以下操作:

<?php
for($i = 1; $i <= 80; $i++):
    if($i == $_GET['id']){
        $class = 'show';
    } else {
        $class = 'hidden';
    }
?>
<div id="r<?php print $i; ?>" class="<?php print $class; ?>">div contents</div>
<?php
endfor;
?>

<?php
for($i = 1; $i <= 80; $i++):
    $class = ($i == $_GET['id']) ? 'show' : 'hidden';
?>
<div id="r<?php print $i; ?>" class="<?php print $class; ?>">div contents</div>
<?php
endfor;
?>

完全相同但是(使用ternary operator)备用了几行而且(有些人认为)它会降低可读性。

答案 3 :(得分:0)

如果您希望加快下载速度,则只应输出要显示的div。你可以这样做:

 $divs = array('r0101', 'r0102', 'r0103');
$divID = $_GET['id'];
foreach($divs as $div)
{
    if($div == $divID){ echo '<div> /* CONTENT HERE */ </div> };
}

希望这有帮助。