Boa tarde! Como desafio, eu localizei o id de Bairro, e também já o preenchi com o cep válido. Também tentei com meu cep e deu tudo certo o código. Além disso, quando o cep é inválido, coloquei para que o limpasse o campo de cep, para que o usuário não precise apagar o antigo para preencher novamente. Acho mais funcional. No final, ficou assim:
async function buscaEndereco(cep) {
var msgErro = document.getElementById('erro');
msgErro.innerHTML = "";
try {
// await só pode ser utilizado numa funcao assincrona
let consultaCep = await fetch(
https://viacep.com.br/ws/${cep}/json/
);
// transfomando em json
let consultaCepConvertida = await consultaCep.json();
if(consultaCepConvertida.erro){
throw Error('Cep não existente')
;
}
var cidade = document.getElementById('cidade');
var logradouro = document.getElementById('endereco');
var estado = document.getElementById('estado');
var bairro = document.getElementById('bairro');
cidade.value = consultaCepConvertida.localidade;
logradouro.value = consultaCepConvertida.logradouro;
estado.value = consultaCepConvertida.uf;
bairro.value = consultaCepConvertida.bairro;
console.log(consultaCepConvertida);
return consultaCepConvertida;
} catch (erro) {
msgErro.innerHTML = `<p>CEP inválido!</p>`;
var cep = document.getElementById('cep');
cep.value = "";
console.log(erro);
}
}
var cep = document.getElementById('cep'); // focusout quando clica para fora cep.addEventListener("focusout", () => buscaEndereco(cep.value));