当前位置: 首页 > 知识库问答 >
问题:

Javascript函数只对表的第一行[重复]起作用

南宫喜
2023-03-14

我的表中的每一行都有一个edit按钮,其中有一个javascript函数来编辑一行中的数据。每当我单击edit按钮时,所有行都会受到影响,所有输入字段都被启用。一开始,所有行中的所有输入字段都被禁用,但当我单击任何编辑按钮时,所有输入字段都会受到影响。

null

下面是我的html代码:

<?php
if($result = mysqli_query($conn, $sql)) {
    while($row = mysqli_fetch_assoc($result)) {
        ?>
        <tr>
            <td> <?php echo $row["productname"]; ?> </td>
            <td><input type="number" name="crit" id="crit" value="<?php echo $row["quantity"]; ?>" disabled></td>
            <td><button type="button" name="edit" id="edit"><i class="fa fa-edit"></i></button></td>
        </tr>
        <?php
    }
}
?>

下面是我的javascript函数:

    $(document).ready(function() {
    var button = $('#crit');
    $(button).prop('disabled', true);

    $('#edit').click(function() {
        if ($(button).prop('disabled')) $(button).prop('disabled', false);
        else $(button).prop('disabled', true);
    });

});

一旦我单击了特定行的edit按钮,输入字段应该只在该行上启用。

共有1个答案

韩淇
2023-03-14

您为所有元素赋予相同的ID-但是ID必须是唯一的。改用 属性,并使用按钮上的 查找与 类最接近的元素。

<?php
if($result = mysqli_query($conn, $sql)) {
   while($row = mysqli_fetch_assoc($result)){
   ?>
      <tr>
          <td> <?php echo $row["productname"]; ?> </td>
          <td><input type="number" class="crit" value="<?php echo $row["quantity"]; ?>" disabled></td>
          <td><button type="button" class="edit"><i class="fa fa-edit"></i></button></td>
     </tr>
    <?php
    }
}
$(document).ready(function() {
    var buttons = $('.crit');
    $(buttons).prop('disabled', true);

    $('.edit').click(function() {
        var button = $(this).closest("tr").find(".crit");  // closest element with the crit-class
        var status = button.prop("disabled");              // current status
        button.prop("disabled", !status);                  // toggle disabled 
    });
});

属性也是如此,它们也应该是唯一的。

 类似资料:
  • 我在做一个简单的代码

  • 问题内容: 我有一个使用该函数的对象数组。我正在用数组中的一个对象搜索该数组(对象是相同的)。但是似乎没有匹配项。我已经在这个小提琴中重复了这个问题。代码也在下面。那么检查数组是否包含对象的正确方法是什么? 问题答案: 您不能直接比较对象,但是使用此方法,可以将它们与JSON.stringify比较。

  • 我试图理解右值引用。这是我迄今为止编写的代码: 输出只有< code >“hello”,这让我很困惑。 由于 是传递给第二个构造函数的临时对象,因此代码输出就好像只调用第一个构造函数一样。 我猜这要么是编译器优化,要么我错过了关于构造函数和右值的一些细节。

  • 我需要在工作日的特定时间触发一份工作。这些工作日也是动态的,应该从db获取。此外,对于特定的计数,作业应该触发或重复自己。假设一个工作j应该在每一个星期一,星期三,星期五触发,重复计数15即3*5=15,所以它应该在接下来的3周内触发。 我尝试使用如下所示的cronexpression,但无法找到如何在特定计数后阻止作业触发。 请给我一些建议,这样我就能达到我所需要的。

  • 我想在DataFrame的所有行上应用一个函数。例子: 想要的输出: Scala怎么能做到呢?我跟着这个,但没有运气。