如何对并排放置的两个表进行排序,以使一个中的更改反映在另一个中

时间:2010-01-30 22:33:38

标签: javascript html

假设我有两个表A和B,每个表只有一列。

表A中的每一行对应于B中的每一行,但我不希望它们在一个表中。

A       B 
------  ----------
car     automobile
bike    train

当我按字母顺序排序时,我应该

A       B 
------  ----------
bike    train
car     automobile

2 个答案:

答案 0 :(得分:1)

当然,假设有足够的抽象,这就像两次调用一样简单。

sortingModule.sort( document.getElementById('table-a') );
sortingModule.sort( document.getElementById('table-b') );

我认为您需要向我们提供更多详情。你有没有写过排序机制?

答案 1 :(得分:1)

由于表A中的项与表B中的项具有一对一的对应关系,因此最好使用对象来表示此数据。这些对象的数组表示整个数据集。每当需要排序时,只需对此数组进行排序,然后重新填充表。

// first represents the item in table A
// second represents the item in table B
function Transporter(first, second) {
    this.first = first;
    this.second = second;
}

然后创建一个自定义排序函数,仅比较属性first以排序Transporter个对象的数组。

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

试运行:

var transporters = [];
transporters.push(new Transporter("car", "automobile"));
transporters.push(new Transporter("bike", "train"));

console.log(transporters); // [0] => (car:automobile), [1] => (bike:train)
transporters.sort(compare);
console.log(transporters); // [0] => (bike:train), [1] => (car:automobile)

排序完成后,更新两个表。

或者,或者使用任何现有的脚本或插件。这是jQuery的一个:http://tablesorter.com/docs/