Se utilizarmos o if comparando se o elemento é nulo primeiro, ele retorna erro normal que deveria:
function tocaSom(idElementoAudio) { const elemento = document.querySelector(idElementoAudio);
if ((elemento != null) && (elemento.localName === 'audio')) {
elemento.play();
} else {
console.log('Elemento não encontrado');
}
}
Retorno
tocaSom('.piano'); main.js:7 Elemento não encontrado
Porém, se dentro do if validarmos primeiro se o LocalName do elemento é === 'audio', ele retorna que não conseguiu ler localName:
function tocaSom(idElementoAudio) { const elemento = document.querySelector(idElementoAudio);
if ((elemento.localName === 'audio') && (elemento != null)) {
elemento.play();
} else {
console.log('Elemento não encontrado');
}
}
Retorno:
main.js:4 Uncaught TypeError: Cannot read properties of null (reading 'localName') at tocaSom (main.js:4:19) at :1:1
Fiz uns testes e a validação de o elemento ser nulo é o responsável, mas as duas condições estão no if e deveriam retornar o mesmo else. Alguém sabe me informar por quê?