使用解析器进行 Javascript 搜索

标签 javascript html

我想让这段代码与我的解析器一起工作。

function search() {
var input, filter, table, tr, td, i;
input = document.getElementById("input");
filter = input.value.toUpperCase();
table = document.getElementById("myTable");
tr = table.getElementsByTagName("tr");
for (i = 0; i < tr.length; i++) {
    td = tr[i].getElementsByTagName("td")[0];
    if (td) {
        if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
            tr[i].style.display = "";
        } else {
            tr[i].style.display = "none";
        }
    }
}

解析器:

function load() {
data = data[0];
var uno = document.getElementById('data');
for(var i = 0; i < data.list.length; i++)
{
    var content = uno.innerHTML;
    content += "<div class='grid-item'><div class='inside' id='item" + i + "'><h2 id='contents" + i + "' class='pl-content-title' href=./index.html#" + data.list[i].hash + ">" + data.list[i].title + "</h2><div class='collapsing'><br><table id='mytable'>";
    for(var e = 0; e < data.list[i].content.length; e++)
    {
        content += "<tr><td class='tabledata'><a class='pl-content' href=./index.html#" + data.list[i].content[e].hash + ">" + data.list[i].content[e].title + "</a></td></tr>";
    }
    uno.innerHTML = content + "</table></div></div></div>";
}

html:

<input class="pl-search" type="text" placeholder="Suche" id="input" onkeyup="search()">

如果我将表直接复制到我的 html 中,它可以工作,但如果表是由我的解析器脚本构建的,则不行。 来自浏览器控制台的错误消息是:

Uncaught TypeError: Cannot read property 'getElementsByTagName' of null

对此有什么想法吗?

最佳答案

<table id='mytable'>

应该是

<table id='myTable'>

此拼写错误导致 table = document.getElementById("myTable"); 返回 null。

在这样的静态示例中,您只需修复拼写错误即可。

编写动态函数时,通过使用后备来防止错误

tr = table ? table.getElementsByTagName("tr") : null;

当您评估 for 时,使用 tr 依此类推。 (声明 k)

for (i = 0, k= tr ? tr.length : 0; i < k; i++) 

关于使用解析器进行 Javascript 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53221901/

相关文章:

javascript - IE 不从 php 脚本播放 mp3

javascript - 默认选中按钮

javascript - React Google Maps InfoWindow 切换一次显示一个

javascript - jquery this.siblings 无法正常工作

html - 在Chrome中使用css3写入模式在表格单元格中显示垂直文本

jquery - 如何使用 jquery 将数据呈现为 html 中的缩进列表?

javascript - 使用复选框 mysql 和 php 或 javascript 隐藏列表中的值

javascript - Papa Parse 在解析 CSV 文件时给出额外的空行

html - 为什么我的页脚没有显示在底部?这个 CSS 有什么问题?

javascript - Canvas 与服务器生成的图形