Jump to content
s3c0

[RESOLVIDO] DIV + JS

Recommended Posts

Amigo, estou com um probleminha e não consigo resolver...

 

já revirei a internet inteira, mas não encontrei nada parecido com o que preciso.

 

A questão é o seguinte. Queria executar um comando JS assim que uma div aparecer na tela.

 

Abaixo estou deixando os codes

 

<script src="js/jquery.min.js" type="text/javascript"></script>
<style>
						#progress {
							width:100%;
							height:20px;
							border: solid #808080 2px;
						    border-radius: 5px;
							background-image: linear-gradient( 90deg, green, yellow, red );
						}
						#processador{
							width: 0%;
							height: 16px;
							background-color: rgba(0, 0, 0, 0.5);
						}
						#memoria{
							width: 0%;
							height: 16px;
							background-color: rgba(0, 0, 0, 0.5);
						}
						#hd{
							width: 0%;
							height: 16px;
							background-color: rgba(0, 0, 0, 0.5);
						}
						</style>
						Processador
						<span data-bind="Usage"><div id="progress"><div id="processador"></div></div><div style="text-align:right;">20%</div></span>
						
						Memória
						<span data-bind="Usage"><div id="progress"><div id="memoria"></div></div><div style="text-align:right;">50%</div></span>
						
						Hard Disk
						<span data-bind="Usage"><div id="progress"><div id="hd"></div></div><div style="text-align:right;">80%</div></span>

 

 

JS

 

<script type="text/javascript">
						$("#processador").html(function(){
								alert("ok");
								var width = 1;
								var id = setInterval(frame, 10);
								var id2 = setInterval(frame2, 10);
								var id3 = setInterval(frame3, 10);
								  function frame() {
									if (width >= 20) {
									  clearInterval(id);
									} else {
									  width++; 
									  document.getElementById("processador").style.width = width + '%';
									}
								  }
								  function frame2() {
									if (width >= 50) {
									  clearInterval(id2);
									} else {
									  width++; 
									  document.getElementById("memoria").style.width = width + '%';
									}
								  }
								  function frame3() {
									if (width >= 80) {
									  clearInterval(id3);
									} else {
									  width++; 
									  document.getElementById("hd").style.width = width + '%';
									}
								  }
							  
						});
						</script>

 

A "animação" em si, está funcionando perfeitamente, porém ao carregar a página e não no momento em que a DIV aparece na tela

Share this post


Link to post
Share on other sites
44 minutos atrás, Maujor disse:

Olá @2s3co

Precisamos mais informações para ajudar:

1-) "...e não no momento em que a DIV aparece na tela"
No seu HTML não consta o DIV que "vai aparecer" na tela.

2-)Qual é o evento que faz com que o DIV apareça?

 

Olá @Maujor boa noite e obrigado pela resposta.

 

o DIV está sim no HTML.

 

<div id="processador"></div>

 

Acho que não ficou muito claro o que estou tentando fazer...

 

Ao rolar a página, quando esse DIV aparecer na tela, automaticamente executa o JS.

 

Da forma que está o JS é executado assim que a página é carregada

Share this post


Link to post
Share on other sites

Se eu entendi direito acho que é isso mais ou menos algo como isso:

document.addEventListener('scroll', function () {
    console.log(window.pageYOffset);
}, false);

 

Mais informações sobre eventos de scroll caso seja necessário:

https://developer.mozilla.org/pt-BR/docs/Web/Events/scroll

Share this post


Link to post
Share on other sites
11 horas atrás, Omar~ disse:

Se eu entendi direito acho que é isso mais ou menos algo como isso:


document.addEventListener('scroll', function () {
    console.log(window.pageYOffset);
}, false);

 

Mais informações sobre eventos de scroll caso seja necessário:

https://developer.mozilla.org/pt-BR/docs/Web/Events/scroll

 

@Omar~ é isso mesmo que estava precisando. Muitíssimo obrigado

 

consegui adaptar no meu script e está como queria.

 

Porém me surgiu um outro problema. Tem como parar o JS assim que atingir aquela "linha"? Pois toda vez que passa por aquela "linha", o JS é executado novamente.

 

if (window.pageYOffset == 2800){
	//função
}

 

Share this post


Link to post
Share on other sites

Use o método removeEventListener()
https://developer.mozilla.org/pt-BR/docs/Web/API/EventTarget/removeEventListener

document.addEventListener('scroll', function () {
   ...;   
 document.removeEventListener('scroll', function, false)   
}, false);

Share this post


Link to post
Share on other sites
7 minutos atrás, Maujor disse:

Use o método removeEventListener()
https://developer.mozilla.org/pt-BR/docs/Web/API/EventTarget/removeEventListener


document.addEventListener('scroll', function () {
   ...;   
 document.removeEventListener('scroll', function, false)   
}, false);

 

Olá @Maujor obrigado pela resposta.

 

usei da forma orientada, porém dá erro na linha add

 

Uncaught SyntaxError: Unexpected token ,

 

 

Share this post


Link to post
Share on other sites

Já que você está usando jQuery veja a solução a seguir:

$( window ).scroll(function() {
  if ($(window).scrollTop() == 2800){
    $('#processador').show(function(){
      var width1 = 0; var width2 = 0; var width3 = 0;
      var id = setInterval(frame, 30);
      var id2 = setInterval(frame2, 30);
      var id3 = setInterval(frame3, 30);
        function frame() {
          if (width1 >= 20) {
            clearInterval(id);
          } else {
            width1++; 
            document.getElementById("processador").style.width = width1 + '%';
            document.getElementById("proc1").innerHTML = width1 + '%';
          }
        }
        function frame2() {
          if (width2 >= 50) {
            clearInterval(id2);
          } else {
            width2++; 
            document.getElementById("memoria").style.width = width2 + '%';
            document.getElementById("mem1").innerHTML = width2 + '%';
          }
        }
        function frame3() {
          if (width3 >= 80) {
            clearInterval(id3);
          } else {
            width3++; 
            document.getElementById("hd").style.width = width3 + '%';
            document.getElementById("hd1").innerHTML = width3 + '%';
          }
        }  
    })  
    $(window).off('scroll');  
  }
})

 

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 asacap1000
      Galera me ajudem por favor, estou pirando kkkkk
       
      Seguinte, tenho um form que realiza o submit via javascrit enviando os dados para uma página php formatada em json.
      Está gravando perfeitamente porém preciso dos dados do retorno, como Link do boleto, e alguns outros resultados para inserir no banco nesse ponto já pesquisei um monte testei de tudo até a página bugar e nada kkkk
       
      o Script que utilizo para o envio é esse:
       
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $("#frmBoleto").submit(function(){ $.ajax({ type: "POST", url: "https://www.sitedaloja.com.br/action/boleto_bradesco/gerando_boleto.php", data: $(this).serializeArray(), }).done(function( msg ) { }); return false; }); </script> Como fazer para capturar os dados  da resposta do json?  
    • By Sapinn
      Salve salve! Nuca intendi como isso realmente funciona por isso gostaria da ajuda de vcs. Estou desenvolvendo um sistema de historias e acho que seria interessante no envio dessas historia além dos texto imagem ilustrativas, mais ou menos como blogs de noticias fazem, mas como posso enviar texto e imagem e depois retorna-los juntos? Eu sei com enviar imagens em php mas gostaria de enviar a imagem e o texto colocando ambos em um textarea acho que assim ficaria bem mais interessante alguém pode me ajuda?
       
    • By clickanapolis
      Boa tarde pessoal, desculpa se postei em lugar errado, mais não sei aonde postar essa minha dúvida. Estou finalizando um projeto que consiste em uma plataforma de processo seletivo e na etapa final os candidatos iram fazer uma prova online.
       
      O cliente me perguntou se é possível bloquear o navegador, tipo se ele sair do navegador ou mudar de aba tipo o sistema finalizar a prova do candidato, visto que o sistema irá identificar que ele foi fazer uma pesquisa.
       
      Eu particularmente não vi nada igual ate hj e não sei se existe algo seja em javascript ou qualquer outro modo de fazer isso.
    • By FilipeON
      Olá Sou iniciante em Javascript... Preciso de ajuda para a seguinte questão:
      Tenho duas FUNÇÕES e preciso executa-las de forma aleatória, já tentei de varias formas, mas sem sucesso, alguém pode me ajudar?
      Basicamente o que preciso é que toda vez que a pagina WEB for carregada uma das duas funções seja sorteada e executada.
       
      As funções são:
      function vt1(){fireEvent (document.getElementById('bt-1'), 'click');} function vt2(){fireEvent (document.getElementById('bt-2'), 'click');}
       
    • By Danilo - Jesus voltará!
      Olá, estou fazendo um cálculo de horas para cartão ponto em php e jquery... o cálculo do php já consegui um satisfatório. Preciso agora ao preencher os campos que são gerados dinamicamente de 1 a 31 que são os dias do mês, ao sair do campo Jornada (horas de trabalho), ele envie via ajax os valores preenchidos nesses 4 campos anteriores que são 4 inputs de tempo (time).
      Eu consegui recuperar individualmente, mas ele passa a chamada da função em todos, se dou um alert por exemplo ele percorre todos os campos dinâmicos para aí ir para o outro input, que no caso acontece a mesma coisa, segue o script que utilizei para pegar o valor do input individual, aí preciso que não percorra todos e pegue apenas o valor de cada um no onblur do campo jornada conforme está na figura e me retorne para os campos específicos com os dados que pegarei no php,. Espero ter sido claro, se alguém puder ajudar eu agradeço.
       
      $(document).ready(function() { $(":input").blur(function() { var id = $(this).attr('id'); var value = $(this).val(); alert(id + " " + " " + value); }); }); O que preciso está na figura abaixo:
       

       
      Aguardo, se alguém puder ajudar...agradeço
       
×

Important Information

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