Gazua
(usa Debian)
Enviado em 04/05/2020 - 11:11h
Olá à todos.
Estou estudando sobre mecanismos de buscas em javascript. E depois de algumas depois me arrisquei num código que faz uma busca dentro de uma tabela e sem mais delongas darei um exemplo do que está ocorrendo.
O código é o seguinte:
var tbody = document.getElementById('tbody')
//Nessa parte ficar uma variável "var dados". Uma array com nomes e emails por isso não coloquei.
for(var i = 0; i < dados.length; i++){
var tr = '<tr>' +
'<td>' + dados[i][0] + '</td>' +
'<td>' + dados[i][1] + '</td>' +
'<td>' + dados[i][2] + '</td>' +
'<td>' + dados[i][3] + '</td>' +
'</tr>'
tbody.innerHTML += tr
}
var tr = tbody.childNodes
document.getElementById('txtBusca').addEventListener('keyup', function(){
var busca = document.getElementById('txtBusca').value.toLowerCase()
for(var i = 0; i < tbody.childNodes.length; i++){
var achou = false
var tr = tbody.childNodes[i]
var td = tr.childNodes
for(var j = 0; td.length; j++){
var valor = td[j].childNodes[0].nodeValue.toLowerCase()
if(valor.indexOf(busca) != -1){
achou = true
}
}
if(achou){
tr.style.display = 'table-row'
} else{
tr.style.display = 'none'
}
}
} )
Código é executando após o evento do teclado como descreve acima no evento 'keyup', no entanto recebo o seguinte erro no console: "Uncaught TypeError: Cannot read property 'childNodes' of undefined at HTMLInputElement". Esse erro é detectado no seguinte trecho do código: "childNodes[0].nodeValue.toLowerCase()", que está na variável "var valor". Suspeito que seja algo simples, porém minha falta de experiência não permite encontrar a solução