2

我有一个动态生成 Div 的数组。现在我想隐藏和显示 div,一次应该显示 1 个 div 并显示下一个 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 div 但在 3 div 的情况下它不起作用,请让我知道我做错了什么。

4

7 回答 7

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  } ?>
于 2012-11-20T10:33:56.733 回答
0

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

于 2012-11-20T10:16:40.940 回答
0

您必须使用此代码来实现该代码

$("#div,$div2,#div3").hide();
$("#div,#div2,#div3").show();
于 2012-11-20T10:23:17.150 回答
0

为什么不创建一个类 hidden-div{display:none;} 并从 php 将其添加到类中?

于 2012-11-20T10:27:14.130 回答
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;">';

 ...
于 2012-11-20T10:28:12.393 回答
0

假设您修复了 HTML 并将关闭放在else }之前$h++;,您的 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(),它改变了 divsetset1没有其他任何东西。

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

于 2012-11-20T10:28:31.797 回答
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++;
} ?>
于 2012-11-20T10:33:11.540 回答