Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Сортировщик списка (https://javascript.ru/forum/events/63089-sortirovshhik-spiska.html)

Blondinka 17.05.2016 10:42

Сортировщик списка
 
Добрый день.

Код http://jsfiddle.net/wy8X9/226/
Не добавляются элементы из списка.
addAllElements: function(){
        var tbody = document.getElementsByTagName("tbody");
        var tr = document.createElement("tr");
        for(var i = 0; i < 3; i++){
           tbody.appendChild("tr"); 
           tr.createTextNode(list.test[i]);
        }     
    }

Еще, хотелось бы, оптимизировать код.
document.getElementById("id").addEventListener("click", function(){
    list.sortById();
});

Если таблица состоит из 10-ти ячеек, замучаюсь копипастить. Как вариант, рассматриваю цикл.

Blondinka 17.05.2016 10:51

Обновила код, но мало что изменилось.
http://jsfiddle.net/VaAlina/wy8X9/235/

рони 17.05.2016 10:56

Blondinka,
в 5 создайте ячейку, 6 добавьте в ячейку текст, 7 добавьте ячейку в строку, в 5 строке исправьте ошибку поставьте после цикла

рони 17.05.2016 11:02

Blondinka,
2 строка выберите нужный элемент из списка.

рони 17.05.2016 11:13

Blondinka,
:(
addAllElements: function() {
     var tbody = document.getElementsByTagName("TBODY")[0],
         f = document.createDocumentFragment();
     for (var k = 0; k < list.test.length; k++) {
         var tr = document.createElement("TR");
         for (var i = 0; i < 3; i++) {
             var td = document.createElement("TD"),
             text = document.createTextNode(list.test[k][i]);
             td.appendChild(text);
             tr.appendChild(td);
         }
         f.appendChild(tr);
     }
     tbody.appendChild(f);
 }

Blondinka 17.05.2016 11:21

рони,
почему грустный смайлик? Я пишу. Сейчас так http://jsfiddle.net/VaAlina/wy8X9/236/
Работает не очень. Создала таблицу без ячеек и удивляюсь, почему же она не работает.

Blondinka 17.05.2016 12:05

http://jsfiddle.net/VaAlina/wy8X9/240/ не работает. Возьму ваш код. Он работает.

Blondinka 17.05.2016 12:08

рони,
спасибо.

Blondinka 17.05.2016 13:18

Доделала.
http://jsfiddle.net/VaAlina/wy8X9/243/
Появился вопрос: "Почему сортировка по названию работает только с reverse() ?"

рони 17.05.2016 13:43

Blondinka,
потому что не число и надо использовать полную версию сортировки , а не разницу.
если нужно поменяйте a и b местами во 2 строке
sortByName: function() {
    list.test = list.data.sort(function(a, b) {
        a = a[1];
        b = b[1];
        if (a > b) return 1;
        if (a < b) return -1;
        return 0
    });
    alert(list.test.join(", "));
},

рони 17.05.2016 13:55

удаление строк таблицы
 
Blondinka,
на всякий случай ещё вариант удаления строк таблицы...
removeAllElements: function() {
     var tbody = document.getElementsByTagName("TBODY")[0];
     for (; tbody.rows.length;) {
         tbody.deleteRow(0)
     }
 },

Blondinka 17.05.2016 14:48

рони, спасибо.


Часовой пояс GMT +3, время: 15:40.