2012-11-20 489 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++; 
} ?>