卸下额外的单元格空间



我有一个脚本:

    var cells = [].slice.call(document.querySelectorAll("#myTable td"));
    var search = document.getElementById("myInput");
    
    search.addEventListener("keyup", function() {
        cells.forEach(function(cell) {
            if (!search.value.trim()) {
                cell.style.background = "white";
                cell.style.display = 'table-cell';
            } else if (cell.textContent.toLowerCase().indexOf(search.value.toLowerCase()) == 0) {
                cell.style.background = 'yellow';
                cell.style.display = "table-cell";
            } else {
                cell.style.background = "white";
                cell.style.display = 'none';
            }
        });
    });
<input id='myInput' type='text'>
<table id='myTable'>
                                    
                                    <tr>
    									<td>a</td>
                                        <td>ab</td>
                                        <td>abs</td>
                                        <td>ador</td>
                                        <td>turous</td>
                                        <td>acac</td>
                                        <td>accle</td>
  									</tr>
  									<tr>
                                    	<td>ed</td>
                                        <td>aced</td>
                                        <td>ate</td>
                                        <td>acg</td>
                                        <td>aci</td>
                                        <td>atic</td>
                                        <td>ive</td>
									</tr>
                                    <tr>
                                      	<td>l</td>
                                        <td>pt</td>
                                        <td>able</td>
                                        <td>ad</td>
                                        <td>adoent</td>
                                        <td>ble</td>
                                        <td>d</td>
                                    </tr>
                                    <tr>
                                    	<td>ed</td>
                                        <td>a</td>
                                        <td>aate</td>
                                        <td>a</td>
                                        <td>aavating</td>
                                        <td>aive</td>
                                        <td>a</td>
									</tr>
                                    <tr>
                                    	<td>d</td>
                                        <td>ng</td>
                                        <td>eable</td>
                                        <td></td>
                                        <td>alarmed</td>
                                        <td>ming</td>
                                        <td>t</td>
                                    </tr>
                                    <tr>
                                      	<td>ted</td>
                                        <td>ae</td>
                                        <td>all</td>
                                        <td>agjhistic</td>
                                        <td>akjhkjg</td>
                                        <td>hjious</td>
                                        <td>ample</td>
                                     </tr>
                                    <tr>
                                    	<td>hjbsed</td>
                                        <td>ahkjng</td>
                                        <td>anhjkd</td>
                                        <td>ahjhnt</td>
                                        <td>ahjkjc</td>
                                        <td>a</td>
                                        <td>hjhed</td>
									</tr>
                                    <tr>
                                    	<td>aghjed</td>
                                        <td>hjjal</td>
                                        <td>ghjmher</td>
                                        <td>amjhkiue</td>
                                        <td>ahkjus</td>
                                        <td>any</td>
                                        <td>ahmkjehensive</td>
                                    </tr>
                                    <tr>
                                      	<td>ajhjkjiate</td>
                                        <td>ahkjpt</td>
                                        <td>arctic</td>
                                        <td>arid</td>
                                        <td>aromatic</td>
                                        <td>artistic</td>
                                        <td>ashamed</td>
                                    </tr>
                                    <tr>
                                        <td>assured</td>
                                        <td>astonishing</td>
                                        <td>athletic</td>
                                        <td>attached</td>
                                        <td>attentive</td>
                                        <td>atkjkjactive</td>
                                        <td>ahghbtere</td>
                                    </tr>
                                    <tr>
                                    	<td>bhkuhish</td>
                                        <td>hkjh</td>
                                       <td>bhkre</td>
                                        <td>barren</td>
                                        <td>basic</td>
                                    </tr>
                                    <tr>
                                    	<td>befsgdfgful</td>
                                        <td>bdsfsdfed</td>
                                        <td>dsfsdfved</td>
                                        <td>bedsfsfcial</td>
                                        <td>better</td>
                                        <td>best</td>
                                        <td>bdfsfitched</td>
                                    </tr>
</table>

我使用此脚本使用HTML表搜索文本。它具有500多个单元格,例如100行和5列等。此脚本在短表中查找文本非常有效,但是当我搜索任何内容时,它也会显示行的差距,如果我有一个长表,该表有超过500个细胞。

在这里,我尝试使用诸如s/g之类的正则表达式,但它不起作用,可能是我将它们插入错误的位置。我也尝试使用许多其他样式更改cell.style.display = "table-cell";,但行不通。

,如果我有超过500个单元格,那么任何人都可以正确地指导我要准确地放置的内容以及在没有行/列间隙的情况下正确地输出的内容以及对语法描述的含义。

尝试这个!=)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" class="input"/>
<div class="print"></div>
<script>
var data = ['food', 'bar', 'google']; // your data
var fx = function(text) {
    var print = function(list,s) {
        var table = $('<table/>').css('width','100%');
        var x = 0;
        while (list[x]) {
            var tr = $('<tr/>');
            while (list[x] && x < 5) {
            	var td = $('<td/>').text(list[x])
            	if(s == list[x]){
            		 td.css('background','red');
            	}
                tr.append(td);
                x++;
            }
            table.append(tr);
        }
        $('.print').html(table);
    }
    if (typeof text === "undefined") {
        print(data, '');
    } else {
        var find = [];
        for (var i = 0; data[i]; i++) {
            if (data[i].toLowerCase().indexOf(text.toLowerCase()) == 0) find[find.length] = data[i];
        }
        print(find,text);
    }
}
$(function() {
    $('.input').keyup(function() {
        fx($(this).val());
    });
    fx();
});
</script>

最新更新