【问题标题】:Html Table row id checkboxHtml 表格行 id 复选框
【发布时间】:2019-05-17 08:18:25
【问题描述】:

我想将每一行的数据库表 ID 作为动态 html 表的复选框值

我正在使用 ajax 从 mysql 数据库中获取数据并创建一个新变量作为 html 文本附加到表的 tbody 上

HTML代码

<div class="col-sm-6" id="ftbl">
    <label for="urbandata">View urban data</label>
    <table class="table table-bordered table-striped">
      <thead>
        <tr>
          <th>Check</th>
          <th>ID</th>
          <th>Type</th>
          <th>Master</th>
          <th>Slave</th>
          <th>Orbit</th>
          <th>Mode</th>
          <th>Action</th>
        </tr>
      </thead>
      <tbody>
      </tbody>
    </table>
</div>

JS代码

$.ajax({
    url: "fetchurban.php",
    method: "POST",
    data:{id:id},
    dataType: "JSON",
    success: function(data){
      if (data){
      var trHTML = '';
        $.each(data, function (i, item) {
            trHTML +='<tr><td><input type="checkbox" id="checkview" onclick="QuickView()" name="'+ item.TblID +'"></td><td>' + item.Type + '</td><td>' + item.Master + '</td><td>' + item.Slave + '</td><td>' + item.Orbit + '</td><td>' + item.Mode + '</td><td><a href='+ item.ImgTIF+ ' title="Download High Quality" data-toggle="tooltip"><span class="glyphicon glyphicon-download"> </span></a><a href=#?id='+ item.ImgLow + ' title="Download Low Quality" data-toggle="tooltip"><span class="glyphicon glyphicon-cloud-download"></span></a></td></tr>' ;
        });
        $('#ftbl tbody').append(trHTML);
      }
    }
  })
})

如果用户选择复选框,我希望获得数据库表的 ID。 现在有了这段代码,我对表的所有行都有相同的 id

【问题讨论】:

  • ID 在 HTML 文档中必须是唯一的,因此您不能在此处开始使用 id="checkview"。 // 你是指这里的name="'+ item.TblID +'" 部分吗?那么可能你所有的项目都具有相同的TblID 值。
  • 你能分享一些你从服务器收到的 json 吗?正如@04FS 所说,您的 json 中可能有相同的 id

标签: javascript php html mysql ajax


【解决方案1】:

您可以将标识符设置为输入的data- 元素:

function QuickView(element) {
  var rowId = $(element).data('id');
  // here comes the rest of your code.
}

$.ajax({
    url: "fetchurban.php",
    method: "POST",
    data:{id:id},
    dataType: "JSON",
    success: function(data){
      if (data){
      var trHTML = '';
        $.each(data, function (i, item) {
            trHTML +='<tr><td><input type="checkbox" data-id="'+ item.TblID +'" onclick="QuickView(this)"></td><td>' + item.Type + '</td><td>' + item.Master + '</td><td>' + item.Slave + '</td><td>' + item.Orbit + '</td><td>' + item.Mode + '</td><td><a href='+ item.ImgTIF+ ' title="Download High Quality" data-toggle="tooltip"><span class="glyphicon glyphicon-download"> </span></a><a href=#?id='+ item.ImgLow + ' title="Download Low Quality" data-toggle="tooltip"><span class="glyphicon glyphicon-cloud-download"></span></a></td></tr>' ;
        });
        $('#ftbl tbody').append(trHTML);
      }
    }
  })
})

这是上面的demo

编辑:

我删除了关于不允许使用整数作为 ID 属性的初始语句,因为它不再有效,正如 Quentin 在 cmets 中指出的那样。有时很难忘记你曾经学到的东西。

【讨论】:

  • “由于 HTML 元素的 ID 可能不是以整数开头” — 几年前,当 HTML 5 出现时,该限制已被取消。唯一的限制是“唯一”和“无空格”
  • @Quentin 我的错,在我的帖子中更正了。感谢您指出这一点!
  • 谢谢你!这个解决方案就是我想要的!
猜你喜欢
  • 2016-02-10
  • 2013-06-25
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 2020-01-14
  • 1970-01-01
相关资源
最近更新 更多