Почему значение теряется при сортировке таблицы с помощью JavaScript - PullRequest
0 голосов
/ 02 апреля 2012

Я пытаюсь отсортировать таблицу с помощью JavaScript.

function test() {
    var table = document.getElementById("myTable");

    var allRow = table.getElementsByTagName('tr');

    var ar = new Array();
    for(var i = 1; i < allRow.length; i++) {
        ar[i - 1] = allRow[i];
    }

    //sort the data according to number
    ar.sort(function(l, r) {
        var num1 = parseInt(l.childNodes[1].innerHTML);
        var num2 = parseInt(r.childNodes[1].innerHTML);
        return (num1 > num2) ? 1 : ((num1 < num2) ? -1 : 0);
    });
    //assigning the sorted data in the table
    for(var i = 0; i < ar.length; i++) {
        allRow[i + 1].innerHTML = ar[i].innerHTML;
    }
}

Но когда я пытаюсь назначить отсортированные данные в таблице, это не так. Но если я сохраню данные ar в новом массиве, а затем назначу их в allRow, это произойдет. Я абсолютно новичок в этом. Так может кто-нибудь сказать мне, почему это происходит?

var tmp = new Array();
for(var i = 0 ; i<ar.length ; i++){
    tmp[i] = ar[i].innerHTML;
}

for(var i = 0; i < ar.length; i++) {
    allRow[i + 1].innerHTML = tmp[i];
}

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

почему вы переопределяете функцию сортировки своими собственными. При сортировке можно сортировать данные любого типа, такие как числовые, алфавитные и т. Д. *

, сделать это просто, как это

0 голосов
/ 02 апреля 2012

Когда вы копируете элементы в массив ar, вы не копируете элементы, а только копируете ссылки на элементы.Массив ar не содержит элементов с тем же содержимым, что и массив allRow, он содержит тех же элементов.

При изменении содержимого элемента в *Массив 1008 *, он также изменится в массиве ar, так как это тот же элемент.

Когда вы отсортировали массив, прочитайте innerHTML из всех строк, затем вы можете записать их обратно:

for(var i = 0; i < ar.length; i++) {
  ar[i] = ar[i].innerHTML;
}
for(var i = 0; i < ar.length; i++) {
  allRow[i + 1].innerHTML = ar[i];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...