首页 > 解决方案 > 在 foreach 循环中编辑每个表格行

问题描述

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

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

<?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>

我还在学习,所以请帮我解决我的问题。我期待代码适用于每个单独的表格行。

标签: php

解决方案


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

   <?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函数即可。


推荐阅读