如何更改特定的jQuery dataTables单元格值

时间:2016-03-22 17:23:55

标签: javascript jquery html datatables

我有2个HTML个表格。 Table 1Summary Table 2

我使用以下函数在Table 1的单元格中添加或删除复选标记,然后在Summary Table 2中递增或递减相关值。

function toggleCheckMark(elem, brand){

  var cell = $(elem).html();
  if(cell == ""){

    $(elem).html("&#x2714");

    var brandval = parseInt($("#" + brand).find("td:eq(3)").html());
    var newval = brandval + 1;
    $("#" + brand).find("td:eq(3)").html("" + newval + "");


  } else {

    $(elem).html("");

    var brandval = parseInt($("#" + brand).find("td:eq(3)").html());
    var newval = brandval - 1;
    $("#" + brand).find("td:eq(3)").html("" + newval + "");

  }

}

Summary Table 2是沼泽标准html表时,这非常正常。但是,当我在DataTables()上使用Summary Table 2时。该值未定义,因此无法更改。

如何更改我的功能,以便在DataTables()格式化表格时它可以正常工作?

修改

我的HTML已包含空的<table id="rangereviewsummarytable">标记,我使用以下函数填充摘要表。

这是一个可点击的单元格:

rrtable += "<td class='checkboxcell' onClick=\"toggleCheckMark(this, '" + item.brand + "')\">&#x2714</td>";

功能

function generateReviewSummary(summaryarray){

  var summarytable = "";

  $.each(summaryarray, function(brand, values){

    summarytable += "<tr id='" + brand +"''>"; //here is the logic behind $("#" + brand)...
    summarytable += "<td>" + brand + "</td>";
    summarytable += "<td>" + values.current + "</td>";
    summarytable += "<td>" + values.rec + "</td>";
    summarytable += "<td>" + values.user + "</td>"; // this is the col I want to update
    summarytable += "</tr>";

  });

  summarytable = "<tbody>" + summarytable + "</tbody>";

  $("#rangereviewsummarytable").append(summarytable);
  //$("#rangereviewsummarytable").DataTable();
  $("#rangereviewsummarypanel").show();

}

1 个答案:

答案 0 :(得分:1)

始终使用API​​。您似乎想要更新特定行中的特定列 - 使用.cell().data() API方法而不是jQuery .html()

var brandval = parseInt(summaryTable.cell({ row: 0, column: 2 }).data())
brandVal = !isNaN(brandVal) ? brandVal+1 : 1 //or -1
summaryTable.cell({ row: 0, column: 2 }).data(brandVal).draw() 

我指的是summaryTable,你实例化后必须拥有的dataTable实例&#34;摘要表2&#34;某处:

var summaryTable = $("#" + brand).DataTable()

我只能猜测$("#" + brand)背后的逻辑。