排序后保持相同的数字顺序(Footable)

时间:2017-05-24 21:44:55

标签: javascript jquery footable

Standart Footable桌子。很多专栏。 排序后如何保持相同的数字顺序?

原件:

RMS_Import

按视图(DESC)排序后:

LEFT JOIN RMS_Import ON Temp_LockedList.MATERIAL = RMS_Import.artnr

但我需要这个:

id | Book     | Views
---------------------
1  | Book 1   | 3493
2  | Book 2   | 3792
3  | Book 3   | 4022

目标是在排序后ID必须始终为1,2,3(当然不是在寻呼之后)

2 个答案:

答案 0 :(得分:0)

我认为您需要将您的观点与数据分开一点。我将使用Arrays进行说明。

假设我们有一个包含我们书籍的3个对象的arr数组。

testtest2都在迭代相同的数据,但只有test显示在您想要的庄园中。这是因为它不是使用数据ID进行显示,而是使用迭代索引。希望这可以推动你朝着正确的方向前进。

var arr = [{
  id: 1,
  name: "Book 1",
  views: 100
},
{
  id: 2,
  name: "Book 2",
  views: 200
},
{
  id: 3,
  name: "Book 3",
  views: 300
}];

function compare(a,b){
  if(a.views > b.views)
    return -1;
  if(b.views > a.views)
    return 1;
  return 0;  
}

arr.sort(compare);

for(var i=0; i<arr.length; i++){
  var elem = document.createElement("div");
  elem.innerHTML = "id:"+(i+1) + " ";
  elem.innerHTML += "Name: "+arr[i].name + " ";
  elem.innerHTML += "Views: "+arr[i].views;
  console.log(arr[i].id);
  document.getElementById("test").appendChild(elem);
}

for(var i=0; i<arr.length; i++){
  var elem = document.createElement("div");
  elem.innerHTML = "id:"+arr[i].id + " ";
  elem.innerHTML += "Name: "+arr[i].name + " ";
  elem.innerHTML += "Views: "+arr[i].views;
  console.log(arr[i].id);
  document.getElementById("test2").appendChild(elem);
}
<div id="test"></div>
<div id="test2"></div>

答案 1 :(得分:0)

如果您要做的就是按顺序编号每行,jQuery .each()会提供一个迭代变量(i中的function(i))。行显示为i+1,因为与大多数javascript元素一样,每个()都是从0开始的。

$("#mytable tbody tr").each(function(i){
    $(this).find("td:first").text(i+1);
});