1
resposta

Projeto Pessoal: Não consigo entender o que há de errado.

Tenho um projeto pessoal no Github de um Vade Mecum (aquele compêndio de leis que todo advogado e estudante de direito) em html. Estou tentando criar uma funcionalidade para buscar os artigos de cada lei e para isso estou tentando acrescenter IDs em cada artigo. No entanto, por algum motivo isso não está funcionando.

Um trecho do HTML:

<p id="titulo">Lei de Introdução às Normas do Direito Brasileiro</p>

<p id="subtit"><a href="https://www.planalto.gov.br/ccivil_03/decreto-lei/del4657.htm">Decreto-Lei nº 4.657, de 4 de Setembro de 1942.</a></p>

<p id="ementa">Lei de Introdução às normas do Direito Brasileiro.</p>

<p>O <strong>Presidente da República</strong>, usando da atribuição que lhe confere o artigo 180 da Constituição, decreta:</p>

<p><span class="artigo">Art. 1º.</span> Salvo disposição contrária, a lei começa a vigorar em todo o país quarenta e cinco dias depois de oficialmente publicada.</p>

<p>§ 1º. Nos Estados, estrangeiros, a obrigatoriedade da lei brasileira, quando admitida, se inicia três meses depois de oficialmente publicada.</p>

<p>§ 2º. (Revogado pela Lei nº 12.036, de 2009).</p>

<p>§ 3º. Se, antes de entrar a lei em vigor, ocorrer nova publicação de seu texto, destinada a correção, o prazo deste artigo e dos parágrafos anteriores começará a correr da nova publicação.</p>

<p>§ 4º. As correções a texto de lei já em vigor consideram-se lei nova.</p>

<p><span class="artigo">Art. 2º.</span> Não se destinando à vigência temporária, a lei terá vigor até que outra a modifique ou revogue.</p>

<p>§ 1º. A lei posterior revoga a anterior quando expressamente o declare, quando seja com ela incompatível ou quando regule inteiramente a matéria de que tratava a lei anterior.</p>

<p>§ 2º. A lei nova, que estabeleça disposições gerais ou especiais a par das já existentes, não revoga nem modifica a lei anterior.</p>

<p>§ 3º. Salvo disposição em contrário, a lei revogada não se restaura por ter a lei revogadora perdido a vigência.</p>

<p><span class="artigo">Art. 3º.</span> Ninguém se escusa de cumprir a lei, alegando que não a conhece.</p>

O JavaScript:

const artigos = document.getElementsByClassName("artigo");

artigos.forEach(artigo => {
    let numeroArtigo = artigo.textContent;
    numeroArtigo = numeroArtigo.replace(/\./g, "");
    numeroArtigo = numeroArtigo.replace(/ /g, "");
    numeroArtigo = numeroArtigo.replace("º", "");
    numeroArtigo = numeroArtigo.replace(/-/g, "");
    numeroArtigo = numeroArtigo.toLowerCase();
    console.log(numeroArtigo)
    artigo.id = numeroArtigo;
});

O repositório do projeto está hospedado em https://github.com/RenanSantos7/Vade-Mecum

1 resposta

Olá Renan, tudo bem?

Peço desculpas pela demora em obter um retorno

Primeiramente, gostaria de dar o parabéns pelo seu projeto pessoal ficou bonitão em... É ótimo ver seu interesse em utilizar tecnologia para criar uma funcionalidade de busca que conecta duas áreas de Interesse, continue assim!

Analisando o trecho de código HTML e JavaScript que você compartilhou, identifiquei um possível motivo pelo qual o código não está funcionando corretamente. O método getElementsByClassName retorna uma coleção HTML, e essa coleção não possui o método forEach diretamente. No entanto, você pode converter essa coleção para um array utilizando a função Array.from() ou o operador spread ([...artigos]). Em seguida, você poderá usar o método forEach para iterar sobre os artigos e atribuir os IDs desejados.

Aqui está uma versão modificada do seu código que acredito que pode lhe ajudar em JavaScript que deve resolver o problema:

const artigos = document.getElementsByClassName("artigo");
const artigosArray = Array.from(artigos); // ou [...artigos]

artigosArray.forEach(artigo => {
    let numeroArtigo = artigo.textContent;
    numeroArtigo = numeroArtigo.replace(/\./g, "");
    numeroArtigo = numeroArtigo.replace(/ /g, "");
    numeroArtigo = numeroArtigo.replace("º", "");
    numeroArtigo = numeroArtigo.replace(/-/g, "");
    numeroArtigo = numeroArtigo.toLowerCase();
    console.log(numeroArtigo);
    artigo.id = numeroArtigo;
});

Após fazer essas modificações, você deve obter os IDs corretamente atribuídos aos artigos.

Espero ter ajudado, qualquer dúvida, me coloco à disposição! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!