在foreach循环中编辑每个表行

时间:2019-06-13 16:53:06

标签: php

我在一个故事行上有一个foreach循环。每行都有一个“编辑”按钮,仅可编辑该行。使用JS,我想隐藏起来打开并编辑行。

下面是我尝试过的代码,但仅适用于一个元素。

<?php
foreach($sofas as $sofa)
    {

?>
      <tr>
        <td><?php echo $sofa["name"];?></td>
        <td><?php echo $sofa["zirkar"];?></td>
        <td><?php echo $sofa["parche"];?></td>
        <td><?php echo $sofa["fiparche"];?></td>
        <td><?php echo $sofa["mizvasat"];?></td>
        <td><?php echo $sofa["asaly"];?></td>
        <td>
        <input onclick="myFunction()" type="button" value="ویرایش">
        </td>
        </tr>
        <tr style="display:none;" id="<?php echo $sofa["id"];?>">
            <td>
            This is my DIV element.
            </td>
        </tr>

<?php
    }
?>
<script>
function myFunction() {
<?php
foreach($sofas as $sofa)
    {

?>
  var x = document.getElementById("<?php echo $sofa["id"];?>");
<?php
    }
?>
  if (x.style.display === "none") {
    x.style.display = "block";
  } else {
    x.style.display = "none";
  }
}
</script>

我仍在学习,所以请帮助我解决问题。我希望代码能在每个单独的表行上工作。

1 个答案:

答案 0 :(得分:0)

为什么不使用这样的东西:

   <?php
foreach($sofas as $sofa)
    {

?>
      <tr>
        <td><?php echo $sofa["name"];?></td>
        <td><?php echo $sofa["zirkar"];?></td>
        <td><?php echo $sofa["parche"];?></td>
        <td><?php echo $sofa["fiparche"];?></td>
        <td><?php echo $sofa["mizvasat"];?></td>
        <td><?php echo $sofa["asaly"];?></td>
        <td>
        <input onclick="myFunction('<?php echo $sofa["id"];?>')" type="button" value="ویرایش">
        </td>
        </tr>
        <tr style="display:none;" id="<?php echo $sofa["id"];?>">
            <td>
            This is my DIV element.
            </td>
        </tr>

<?php
    }
?>


<script>
function myFunction(id) {
  var x = document.getElementById(id);
  if (x.style.display === "none") {
    x.style.display = "block";
  } else {
    x.style.display = "none";
  }
}
</script>

代码非常简单,您只需将元素ID发送给js函数。