Jump to content
cviniciussdias

Por que ações executadas dentro de loops são realizadas depois das dem

Recommended Posts

Por que, se eu adiciono um código dentro de um loop (for, por exemplo), as ações dentro dele são executadas após o que está fora?

Por exemplo, o seguinte script:

(function () {
    var i, teste = document.getElementById("teste");
    teste.innerHTML = "<ul>";
    for (i = 0; i < 5; i++) {
        teste.innerHTML += "<li>Teste " + i + "</li>";
    }
    teste.innerHTML += "</ul>";
})();

Esse bloco de código me gera essa saída:

<ul></ul><li>Teste 0</li><li>Teste 1</li><li>Teste 2</li><li>Teste 3</li><li>Teste 4</li>

O que está em volta do for, é executado primeiro. Só depois, o que está dentro do for é realizado.

Existe uma possibilidade de resolver isso?

Sei que nesse caso, eu poderia criar o elemento ul, e com appendChild inserir os elementos li, mas, esse foi só um exemplo do meu problema.

 

Desde já, grato!

Share this post


Link to post
Share on other sites

Não cara.. nesse caso do exemplo isso ai não acontece não.

O que vem depois do loop espera o loop acabar.

 

Qual foi o caso real em que vc notou o erro ? no código acima, essa situação não acontece.

Share this post


Link to post
Share on other sites

Fala Vinicius o que acontece é o seguinte

 

 

Ao inserir o <ul> ( teste.innerHTML = "<ul>"; ) o dom automaticamente identifica como um elemento e o fecha.

E outro ponto é que você está adicionando o <li> ( teste.innerHTML += "<li>Teste " + i + "</li>"; ) na div pai do <ul> e não nele;

 

O certo seria algo assim:

var i, teste = document.getElementById("entry2172473");
    teste.innerHTML = "<ul id='ListTest'>";
    lista = document.getElementById('ListTest');
    for (i = 0; i < 5; i++) {
        lista.innerHTML += "<li>Teste " + i + "</li>";
    }

Se rodar esse código no console deste tópico verá o resultado;

  • +1 1

Share this post


Link to post
Share on other sites

Não cara.. nesse caso do exemplo isso ai não acontece não.

O que vem depois do loop espera o loop acabar.

 

Qual foi o caso real em que você notou o erro ? no código acima, essa situação não acontece.

 

William, no exemplo, era exatamente o que acontecia. Você não deve nem ter testado...

Obrigado mesmo assim.

:-)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By ProCODEH
      Eai, galera!
      Estou tentando criar um player de música com playlist, porém não estou tendo muito sucesso, pois quando clico em alguma música o player de música abre em outra página e não na página principal onde quero que fique o player e onde quero que toque (como padrão).

      Vocês podem me dar uma ajuda nisso?
      Tenho esse código:
       
      //* PLAYER DE MÚSICA. inicio(); function inicio(){ var corrente = 0; var audio = $("#musica"); var playlist = $("#playlist"); var tracks = playlist.find("li a"); var len = tracks.length -1; musica[0].play(); playlist.find("a").click(function(e){ e.preventDefault(); link = $(this); corrente = link.parent().index(); run(link, musica[0]); }); musica[0].addEventListener("ended", function(e){ corrente++; if(corrente == len){ corrente = 0; link = playlist.find("a")[0]; }else{ link = playlist.find("a")[corrente]; } run($(link), musica[0]); }); } function run(link, player) { player.src = link.attr("href"); par = link.parent(); par.addClass("active").siblings().removeClass("active"); player.load(); player.play(); } ul{list-style: none; padding: 0px} a{text-decoration: none; color: #444; font-family: arial} li:hover{background: #eee; border-bottom: solid 1px #f60;} li{width: 20%; padding: 5px; border-bottom: solid 1px #ccc;} .active a{color:#f60; padding-left: 1px; font-style: italic;} <audio id="musica" preload="auto" tabindex="0" controls="controls"> <source src="Blackbear-doremi.mp3" type="audio/mpeg"/> Desculpaaa, o áudio não é suportado pelo seu navegador :( </audio> <ul id="playlist"> <li class="active"><a href="Blackbear-doremi.mp3"> BlackBear - Do Re Mi</a></li> <li><a href="BMTH-Medicine.mp3"> Bring Me The Horizon - Medicine</a></li> <li><a href="Hozier-TakeMeToChurch.mp3"> Hozier - Take Me To Church</a></li> </ul>  
    • By thgsousa3122
      <?php $url = 'www.site.com'; $dadosSite = file_get_contents($url); echo $dadosSite; ?> <script type="text/javascript"> window.onload = function(){ var x = document.getElementsByClassName("fraction")[0].innerHTML= "100"; } </script> Glr tenho esse codigo, eu queria alterar o conteudo que tem como classe "fraction", porem ele nao da resposta, alguem tem alguma sujestão?
    • By SilvioHC
      Olá estou começando a a prender node js mas já no primeiro teste algo de errado não está certo 
      const express = require('express'); const app = express(); app.listen(934); //Sempre Na Ultima Linha não sei dizer se é só o tutorial q é antigo 

    • By Jéssica Nascimento
      Meu código só decifra uma letra, não está fazendo as demias tem algum problema no meu código que não consigo enchegar poderiam me ajudar 
       
      function encode(text, offset){   let alphabetSize = 26; let firstAsci = 65; let textEncode =[]; let encodeArray =[];   for (let i=0; i < text.length; i++){   textEncode[i] = (text.charCodeAt(i)-firstAsci+offset)% alphabetSize +firstAsci; encodeArray.push(String.fromCharCode(textEncode[i])); console.log(encodeArray); return encodeArray.join(''); }
    • By AkSOlaris
      Estou, sem sucesso, tentando utilizar a biblioteca crypto js no meu script. Estou precisando usa-lo para gerar um hash que vai num objeto, porém aparentemente devo estar importando de maneira errada, já que a palavra require que eu atribuo a minha constante simplesmente não é reconhecida. Sou iniciante e estou utilizando essa biblioteca para um projeto em blockchain.  Estou usando o vscode e o node, porém depois daqui nao tenho idéia de como proceder, pois ja fiz de tudo que vi em sites e não entendi, tampouco consegui por em pratica.
       
      A linha de código que deveria chamar a biblioteca:
      const SHA256 = require('crypto-js/sha256');  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.