【JavaScript】用原生js来实现表格中多关键词搜索、排序功能

多关键词搜索、高亮和筛选

<body>
    姓名:<input type="text" id="name"><input type="button" value="搜索" id="btn">
    <table border="1" id="table1" width="500">
        <thead>
            <tr>
                <td>ID</td>
                <td>姓名</td>
                <td>年龄</td>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>张三</td>
                <td>23</td>
            </tr>
            <tr>
                <td>3</td>
                <td>Blue</td>
                <td>25</td>
            </tr>
            <tr>
                <td>5</td>
                <td>张昭仪</td>
                <td>28</td>
            </tr>
        </tbody>
    </table>
    <script>
        window.onload = function () {
            var oTable = document.getElementById('table1');
            var oName = document.getElementById('name')
            var oBtn = document.getElementById('btn')
            oBtn.onclick = function () {
                for (var i = 0; i < oTable.tBodies[0].rows.length; i++) { //循环每一行
                    var oTd = oTable.tBodies[0].rows[i].cells[1].innerHTML.toLowerCase()
                    var oInp = oName.value.toLowerCase()
                    var arr = oInp.split(' ') //将字符串分割成数组
                    //oTable.tBodies[0].rows[i].style.background = '' //将所有行的背景颜色清空
                    oTable.tBodies[0].rows[i].style.display = "none"  //将所有行设为不显示
                    for (var j = 0; j < arr.length; j++) { //将数组里的每一个元素和比较列去对比
                        if (oTd.search(arr[j]) != -1) { //字符串中的search(),如果包含返回字符的位置、不包含返回 -1
                            //oTable.tBodies[0].rows[i].style.background = 'red'
                            oTable.tBodies[0].rows[i].style.display = "" //显示符合条件的行(筛选效果)
                        }
                    }
                }
            }
        }
    </script>
</body>

li排序

li移动实例

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #ul1{background:red;}
        #ul2{background:yellow;}
    </style>
</head>

<body>
    <ul id="ul1">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>
    <input type="button" value="移动" id="btn">
    <ul id="ul2"></ul>
    <script>
        window.onload = function(){
            var oBtn = document.getElementById('btn')
            var oUl1 = document.getElementById('ul1')
            var oUl2 = document.getElementById('ul2')
            oBtn.onclick = function(){
                var oLi = oUl1.children[0];
                oUl1.removeChild(oLi); //可以省略这一步,因为appendChild会先把元素从原有父级移除
                oUl1.appendChild(oLi) //appendChild 1、先把元素从原有父级删掉 2、添加上新的父级上
            }
        }
    </script>
</body>

li移动实例2

<body>
    <input type="button" value="移动" id="btn">
    <ul id="ul1">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>
    <script>
        window.onload = function(){
            var oBtn = document.getElementById('btn')
            var oUl1 = document.getElementById('ul1')
            oBtn.onclick = function(){
                var oLi = oUl1.children[0];
                oUl1.appendChild(oLi) //appendChild 1、先把元素从原有父级删掉 2、添加上新的父级上
            }
        }
    </script>
</body>

li排序实例

<body>
    <input type="button" value="排序" id="btn">
    <ul id="ul1">
        <li>23</li>
        <li>35</li>
        <li>11</li>
        <li>8</li>
    </ul>
    <script>
        window.onload = function () {
            var oBtn = document.getElementById('btn')
            var oUl1 = document.getElementById('ul1')
            oBtn.onclick = function () {
                var oLi = oUl1.getElementsByTagName('li');
                //oLi.sort() oLi 是元素的集合,并不是 Array,sort 方法是数组特有的
                var arr = []
                for (var i = 0; i < oLi.length; i++) {
                    arr[i] = oLi[i] //将所有 li 存放到数组中
                }
                arr.sort(function (li1, li2) { //排序 li 数组
                    var n1 = li1.innerHTML     //比较函数:比较 li 里的innerHTML
                    var n2 = li2.innerHTML
                    return n1 - n2
                })
                for (var n = 0; n < arr.length; n++) {
                    oUl1.appendChild(arr[n]) //然后将排序好的 li 依次 appendChild 到 ul 中
                }
            }
        }
    </script>
</body>

表格排序

<body>
    <input type="button" value="排序" id="btn">
    <table border="1" id="table1" width="500">
        <thead>
            <tr>
                <td>ID</td>
                <td>姓名</td>
                <td>年龄</td>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>张三</td>
                <td>23</td>
            </tr>
            <tr>
                <td>3</td>
                <td>Blue</td>
                <td>25</td>
            </tr>
            <tr>
                <td>2</td>
                <td>里斯</td>
                <td>24</td>
            </tr>
        </tbody>
    </table>
    <script>
        window.onload = function () {
            var oTable = document.getElementById('table1');
            var oBtn = document.getElementById('btn')
            oBtn.onclick = function()
            {
                var arr = []
                for(var i = 0; i < oTable.tBodies[0].rows.length; i++){ //将所有tr 存放到数组中
                    arr[i] = oTable.tBodies[0].rows[i]
                }
                arr.sort(function(tr1, tr2){ //排序 tr 数组
                    var n1 = parseInt(tr1.cells[0].innerHTML)
                    var n2 = parseInt(tr2.cells[0].innerHTML)
                    return n1 - n2 //根据每一行的 id 进行排序
                })
                for(var i = 0; i < arr.length; i++){ //将排好序的 tr 数组,依次插入 tbody 中
                    oTable.tBodies[0].appendChild(arr[i])
                }
            }
        }
    </script>
</body>

猜你喜欢

转载自blog.csdn.net/meichaoWen/article/details/112461521