2012-11-20 406 views
2

我有一个数组可以动态生成Div。现在我想隐藏&显示div和1 div应该一次显示并显示下一个div用户必须单击button.something这样的:在PHP中动态显示/隐藏Div

<?php $h=0;?> 
<script stype="textjavascript"> 
     function test() { 
      document.getElementById("set").style.display="none"; 

      document.getElementById("set<?php echo $h+1; ?>").style.display="block"; 

      } 
</script> 
<?php 
foreach($sets as $set){ 
if($h==0) 
{ 
?> 
<div id="set"> 
</php } else { ?> 
<div id="set<?php echo $h;?>" style="display:none;"> 

<p><a class="continue" href="#" onclick="test()">Continue</a></p> 
</div> 
<?php $h++; } } ?> 

现在使用上面的代码,我可以能够隐藏和显示2格,但在3个DIV它是不工作的情况下,请让我知道我做错了。

回答

2

试试看看这个代码。

<?php 
$sets = array('one','two','three','four'); 
?> 
<script stype="textjavascript"> 
    var current = 0; 
    var total = <?php echo count($sets); ?>; 
    function test() { 
     for(var i=0;i<total;i++) 
     { 
      document.getElementById("set"+i).style.display="none"; 
     } 
     current++; 
     document.getElementById("set"+current).style.display="block"; 
    } 
</script> 
<?php 
foreach($sets as $key=>$set){ 
?> 
<div <? if($key>0){ ?> style="display: none" <? } ?> id="set<?php echo $key; ?>"> 
    == <?php echo $set; ?> == 
<p><a class="continue" href="#" onclick="test()">Continue</a></p> 
</div> 
<?php } ?> 
0

不要使用PHP来实现这一点。使用jQuery和一些逻辑来显示和隐藏这些div。

+0

好的,谢谢..你有什么想法吗? –

+0

OP正在使用Javascript,这已经足够了。 – irrelephant

+1

这不是一个真正的答案。他已经在使用javascript来隐藏/显示元素。他通过PHP输出div。为什么要通过javascript输出它们更合乎逻辑? – CharliePrynn

0

你必须使用这个代码实现一个

$("#div,$div2,#div3").hide(); 
$("#div,#div2,#div3").show(); 
0

为什么不`吨您拨打一个类隐藏的div {显示:无;}并从PHP它添加到类?

0

入住这

var current = 0; 
function test() { 
     document.getElementById("set"+current).style.display="none"; 
     current++; 
     document.getElementById("set"+current).style.display="block"; 
} 

... 
foreach($sets as $set){ 
if($h==0){ 
    echo '<div id="set0">'; 
else 
    echo '<div id="set<?php echo $h;?>" style="display:none;">'; 

... 
0

假设您解决您的HTML,并把您的交易的$h++;else},你的PHP代码将生成HTML(和JavaScript),其是固定的,看起来像这样:

<script> 
    function test() { 
     document.getElementById("set").style.display="none"; 
     document.getElementById("set1").style.display="block"; 
    } 
</script> 

<div id="set"></div> 
<div id="set1" style="display:none;"> 
    <p><a class="continue" href="#" onclick="test()">Continue</a></p> 
</div> 
<div id="set2" style="display:none;"> 
    <p><a class="continue" href="#" onclick="test()">Continue</a></p> 
</div> 
<div id="set3" style="display:none;"> 
    <p><a class="continue" href="#" onclick="test()">Continue</a></p> 
</div> 

请注意,所有三个<a>标签都调用相同的Javascript函数test(),它改变了div和set1,而没有其他的东西。

要解决这种情况,您可以给test()一个参数(function test(id))并将test(<?php echo $h; ?>)与每个<a>标签相关联。

0

这不测试。但试试看:

<script stype="textjavascript"> 
     function test(i) { 
      document.getElementById("set").style.display="none"; 

      document.getElementById("set"+i).style.display="block"; 

      } 
</script> 

<?php 
foreach($sets as $set){ 
    if($h==0) 
    {?> 
    <div id="set"> 
     <?php 
    } else { ?> 
     <div id="set<?php echo $h;?>" style="display:none;"> 
     <p><a class="continue" href="#" onclick="test(<?php echo (($h)==count($sets)?'':$h+1);?>)">Continue</a></p> 
     </div> 
    <?php 
    } 
$h++; 
} ?>