Olá, pessoal.
Mais uma vez me deparei com um obstáculo na evolução do aprendizado e gostaria da ajuda de vcs.
Tenho uma lista de input do tipo checkbox com id e value para cada item e desejo apresentar os itens selecionados, classificados numa ordem específica, em nova área da página. Até aí, tudo rodando perfeitamente.
Mas começa a complicar quando empurro para dentro de um array o object HTMLInputElement de cada checkbox selecionado com o array.push(checkboxes[i]) para tentar classificá-lo pelo value do checkbox com um array.sort(), e posteriormente apresentar apenas o id desse array na nova área da tela dentro de uma ol. (Códigos extraídos do arquivo filtro.js abaixo)
Segue abaixo o código para melhor compreensão:
index.html
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Lista UF</title>
<link rel="stylesheet" type="text/css" href="css/index.css">
</head>
<body>
<h2>Meus Estados</h2>
<fieldset>
<legend><b>Selecione os estados: </b></legend><br>
<input type="checkbox" class="estados" id="Acre" name="estado" value="1. ACRE">
<label for="Acre">Acre</label><br>
<input type="checkbox" class="estados" id="Goias" name="estado" value="4. Goiás">
<label for="Goias">Goiás</label><br>
<input type="checkbox" class="estados" id="Maranhao" name="estado" value="5. MARANHÃO">
<label for="Maranhao">Maranhão</label><br>
<input type="checkbox" class="estados" id="Df" name="estado" value="3. DISTRITO FEDERAL">
<label for="Df">Distrito Federal</label><br>
<input type="checkbox" class="estados" id="Rj" name="estado" value="7. RIO DE JANEIRO">
<label for="Rj">Rio de Janeiro</label><br>
<input type="checkbox" class="estados" id="Sp" name="estado" value="8. SÃO PAULO">
<label for="Sp">São Paulo</label><br>
<input type="checkbox" class="estados" id="Bahia" name="estado" value="2. BAHIA">
<label for="Bahia">Bahia</label><br>
<input type="checkbox" class="estados" id="Para" name="estado" value="6. PARÁ">
<label for="Para">Pará</label><br>
</fieldset>
<p>Obs: Os estados selecionados serão montados em uma nova lista!</p><br>
<button id="montar-lista" class="btnMontarLista">Montar Lista</button>
<ol id="lista-montada" class="invisivel">
<li></li>
<li></li>
<li></li>
</ol>
<button id="limpar-lista" class="invisivel">Limpar lista</button>
<script src="js/filtro.js"></script>
</body>
</html>
filtro.js
var montarLista = document.querySelector("#montar-lista");
var limparLista = document.querySelector("#limpar-lista");
montarLista.addEventListener("click", function (){
var array = [];
var checkboxes = document.querySelectorAll('input[type=checkbox]:checked')
for (var i = 0; i < checkboxes.length; i++){
array.push(checkboxes[i]);
array.sort();
}
var ol = document.querySelector("#lista-montada");
var btn = document.querySelector('#limpar-lista');
ol.innerHTML = "";
for (let i = 0; i < array.length; i++) {
var li = document.createElement("li");
li.textContent = array[i];
ol.appendChild(li);
console.log(array[i]);
}
ol.classList.remove("invisivel");
btn.classList.remove("invisivel");
});
limparLista.addEventListener("click", function(){
console.log("fui clicado");
location.reload();
});
A pergunta é: Consigo classificar os "objetos" desse array pelo atributo value do object HTMLInputElement e depois apresentar/imprimir o id desse object ? Como?