【问题标题】:Change table contents depending on link clicked根据点击的链接更改表格内容
【发布时间】:2016-10-06 08:57:14
【问题描述】:

我有 2 个 HTML 表格。我正在尝试根据第一个表中按下的链接来更改第二个表的内容。

下面是填充第一个表的代码:

$.each(tableResults, function () {
  $('#table1 tbody:last-child').append('<td>' + this + '</td>'); 
});

下面是填充第二个表的代码:

$(document).ready(function () {
  var tableName = 'databaseTable1';
  $.ajax({
    url: 'http://localhost/api/Dynamic?table=' + tableName, 
    dataType: 'Json',
    success: function (tableResults) {
      $.each(tableResults, function (index, value) {
        if ($('#table2 th:last-child').length === 0) {
          $('#table2 thead').append('<th>' + value + '</th>');
        } else {
          $('#table2 th:last-child').after('<th>' + value + '</th>');
        }
      });
    }
  });
});

如您所见,表格是动态填充的。我需要知道如何将第一个表中的每个值转换为将变量tableName 更改为所选值的链接。

然后页面应刷新并显示所选表中的数据。如果它有助于我的程序有一个F# 后端。

另外,有人知道我如何将tableNames 默认值设置为table1 中的第一个值。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery html mysql ajax


    【解决方案1】:

    您可以将tableNames 存储在触发器元素的属性中(例如a)。然后,当用户点击这个触发器时,使用.attr()从属性中获取tableName

    我不知道你的反应,所以在我的例子中,有一个虚拟的。

    (点击任意一行,查看日志中的tableName

    var tableResults = [
      {
        name: 'dynamicTable1'
      },
      {
        name: 'dynamicTable2'
      }
    ];
    
    $.each(tableResults, function () {
      $('#table1 tbody:last-child').append('<tr><td><a data-table="' + this.name + '">' + this.name + '</a></td></tr>'); 
    });
    
    $(document).on('click','[data-table]', function(){
      var link = $(this),
          tableName = link.attr('data-table');
    
      console.log(tableName);
    
      // do your ajax call with tableName
      // $.ajax({ ....
    });
    <script src="https://code.jquery.com/jquery-3.1.0.js"></script>
    <table id="table1">
      <tbody></tbody>
    </table>
    <hr />
    <table id="table2">
      <tbody></tbody>
    </table>

    http://jsbin.com/jicihohama/edit?html,js,console,output

    注意事项:

    1. 然后页面应该刷新并显示数据

      刷新是指ajax“刷新”吗?否则为什么需要 ajax?

    2. 您不能将td 放入tbody,因此您还需要添加一行(tr)。

    【讨论】:

    • 感谢您的帮助。最后一件事,table2 中的数据,我以为会被新数据替换,但事实并非如此。知道如何在不删除表的情况下删除旧数据。我试过这样的事情:document.getElementById("table2").deleteTHead();
    • 如果我理解正确,你可以这样做$('#table2').html(''),它会删除#table2中的所有html。这样,您可以根据需要仅删除 theadtbody 内容。精明吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 2021-08-15
    相关资源
    最近更新 更多