在函数排序列表中添加:选项在列表中排序初始顺序

时间:2016-01-01 16:43:54

标签: javascript html sorting

是否可以添加选项:"将列表排序为原始订单" (首先按升序排序,第二次按降序排序,然后第三次点击将返回原始顺序)?

如果可能,你可以展示一下吗?

这个功能:

列出HTML:

<span style="font-size:140%"> <a id="Sort" href="#">Orden List</a></span><span id="set_order"> ▼</span><br /><br />
<b class="sidebar" id="PostList12">
<li>C</li>
<li>A</li>
<li>D</li>
<li>B</li></b>

功能:

window.onload = function () {
    var desc = false;
    document.getElementById("Sort").onclick = function () {
        sortUnorderedList("PostList12", desc);
        desc = !desc;
        return false;
    }

修复排序功能的功能:

function compareText(a1, a2) {
        var t1 = a1.textContent;
        var t2 = a2.textContent;
        return (t1 > t2) ? 1 : (t1 < t2) ? -1 : 0;
    }

获取排序列表:

function sortUnorderedList(ul, sortDescending) {
    if (typeof ul == "string") {
        ul = document.getElementById(ul);
    }
    var lis = ul.getElementsByTagName("li");
    var vals = [];
    for (var i = 0, l = lis.length; i < l; i++) {
        vals.push(lis[i]);
    }

按字母顺序逐渐减少:

if (sortDescending) {
            vals.reverse();
            document.getElementById("set_order").innerHTML=" ▼";
        }

按字母顺序排列新月:

else {
            vals.sort(compareText);
            document.getElementById("set_order").innerHTML=" ▲";
        }
        for (var i = 0, l = vals.length; i < l; i++) {
            ul.appendChild(vals[i]);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

Undo sort on sorted array in javascript部分回答了这个问题,其中一个好的解决方案是将原始订单存储到变量并每隔三次点击显示一次。

在那里,我将介绍变量i,每次点击都附加一个变量i。然后在每次点击时你都有三个ifs:

if (i % 3 === 0) {
  do first thing
} else if (i % 3 === 1) {
  do second thing
else {
  do third thing.
}

每次点击更新变量都会使机器滚动,%运算符会跟踪状态操作。

为了让第一个动作为0,你必须从零开始并在添加之前制作ifs。

答案 1 :(得分:0)

我添加选项设置原始订单列表

window.onload = (function() {

         //this to store the initial order

        var desc = 0;
            var uls = document.getElementById('PostList12');
            var liss = uls.getElementsByTagName("li");
            var valss = [];
            for (var is = 0, ls = liss.length; is < ls; is++) {
                valss.push(liss[is]);
            }

        document.getElementById("Sort").onclick = function () {
            sortUnorderedList("PostList12", desc);
            desc = descOrder(desc);
            return false;
        }


    function descOrder(val) {
        return (val == 0) ? 1 : (val == 1) ? 2 : (val == 2) ? 0 : 1;
    }
    function compareText(a1, a2) {
        var t1 = a1.textContent;
        var t2 = a2.textContent;
        return (t1 > t2) ? 1 : (t1 < t2) ? -1 : 0;
    }
    function sortUnorderedList(ul, sortDescending) {
        if (typeof ul == "string") {
            ul = document.getElementById(ul);
        }
        var lis = ul.getElementsByTagName("li");
        var vals = [];
        for (var i = 0, l = lis.length; i < l; i++) {
            vals.push(lis[i]);
        }
        if (sortDescending == 1) {
            vals.reverse();
            document.getElementById("set_order").innerHTML=" ◄";
        }
        else if (sortDescending == 2) {
            vals = valss;
            document.getElementById("set_order").innerHTML=" ▼";
        }
        else {
            vals.sort(compareText);
            document.getElementById("set_order").innerHTML=" ▲";
        }
        for (var i = 0, l = vals.length; i < l; i++) {
            ul.appendChild(vals[i]);
        }
    }
});

我在window.onload function sortUnorderedList()添加valss的全部内容,获取@IBAction func editBarButtonIsPressed(_ sender: Any) { if tableView.isEditing { editBarButton.title = "Edit" } else { editBarButton.title = "Done" } tableView.setEditing(!tableView.isEditing, animated: true) } override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle { editBarButton.title = "Done" return .delete } override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { //here, the element of the array that is presented in the relevant row of the table, is deleted, as well as the row } } 的值。

Example Here