Array.sort () не может сравнивать textContext - PullRequest
0 голосов
/ 10 июля 2019

У меня есть проект CONTACO, я добавляю небольшой скрипт в и добавляю его на HTML-страницу.

Я пытаюсь отсортировать div по его содержанию.Все работает нормально, пока я не сравниваю содержимое обоих div и возвращаю -1 или 1. Я получаю эту ошибку

Uncaught SyntaxError: отсутствует) после списка аргументов

Это то, что я делаю

document.addEventListener("DOMContentLoaded", function(e) {

var lastTab = null;
var tabs = document.querySelectorAll('.tab');
var container = document.querySelector('.mod_article.first.last.block');
var htmlCollection = document.getElementsByClassName('item');
var type = ''
var items = Array.prototype.slice.call(htmlCollection)

// Click Events
tabs.forEach(tab => {

    tab.addEventListener('click', ()=> {

        type = tab.textContent.toLowerCase();

        if(lastTab == null || lastTab != tab) {

            lastTab = tab;
            console.log('this clicked', tab);

            // FIRST CLICK
            // SORT A to Z

            sortDivs(type, false);
        }
        else if(lastTab == tab) {

            // SECOND CLICK
            // SORT Z to A

            sortDivs(type, true);

            lastTab = null
        }

    }, false);
});

function sortDivs(type, reverse) {

    console.log('Type ', type);
    console.log('Reverse ',reverse)

    items.sort(function(iA, iB) {

        var a = iA.querySelector('.wrap.toggler').querySelector('.'+type);
        var b = iB.querySelector('.wrap.toggler').querySelector('.'+type);

        var sA = a.textContent;
        var sB = b.textContent;

        // ERROR HERE BELOW         

        if(sA < sB) {
           return -1;
        }
        else {
           return 1;
        }
    });

    for(var item of items) {

        container.append(item)
    }

}
});

РЕШЕНИЕ: использование sA.localeCompare(sB)

...