Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jhonei

Chamar corretamente uma variável que esteja fora da função.

Recommended Posts

Galera estou tentando fazer um efeito para o meu slide mas estou travando nesta simples etapa, dei uma resumida do que quero neste exemplo abaixo!! estou tentando chamar a variável (" i ") dentro do setInterval, mas ao invés de chamar inicialmente o valor (" 0 ") ele já começa com o número 1.

 

Já tentei de várias formas mais infelizmente não obtive sucesso!!

 

<html>
<head>
<title>teste</title>

<script type="text/javascript">
var i = 0;
function teste() {

setInterval(function() {
	document.getElementById('teste').innerHTML = i;
}, 40);

i++;
if (i == 5) {i = 0;}
}
window.setInterval('teste()',6000);
window.onload = teste;
</script>

</head>
<body>

<div id="teste"></div>

</body>
</html>

 

Grato desde já pela ajuda dos senhores!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

<html>
<head>
<title>teste</title>
<script type="text/javascript">
var i = 0;
function teste() {
   setInterval(function() {
       document.getElementById('teste').innerHTML = i;
       a = i;
   }, 40);
a+i++;
   if (i == 5) {
       i = 0;
   }
}
window.setInterval('teste()',6000);
window.onload = teste;
</script>

</head>
<body>

<div id="teste"></div>

</body>
</html>
</html>

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

você estão disparando o setInterval 2 vezes... dessa forma vai dar problemas e coisas estranhas com o tempo e com as variaveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado "P@trique" pela ajuda, mas eu tento evitar criar variáveis desnecessárias!! você teria alguma outra forma de como chamar a var i no setInterval???

 

você estão disparando o setInterval 2 vezes... dessa forma vai dar problemas e coisas estranhas com o tempo e com as variaveis.

 

Realmente "William Bruno", mas eu tinha me esquecido de por o clearInterval neste exemplo!!

O que importa não é nem tanto este exemplo mais sim, como eu conseguiria chamar a var i com o valor inicial, ou seja, 0, detro do setInterval!!

 

 

<html>
<head>
<title>teste</title>

<script type="text/javascript">
var i = 0;
function teste() {

var stop = 0;
       var acao = setInterval(function() {
           document.getElementById('teste').innerHTML = i;

       stop += 2;
       if (stop > 100) {clearInterval(acao);}
       }, 40);

i++;
if (i == 5) {i = 0;}
}
window.setInterval('teste()',6000);
window.onload = teste;
</script>

</head>
<body>

<div id="teste"></div>

</body>
</html>

 

Mais uma vez agradeço pela ajuda dos senhores!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

porque não faz assim:

 

<html>
<head>
<title>teste</title>

<script type="text/javascript">
var i = 0;
function teste() {
   var stop = 0;
   document.getElementById('teste').innerHTML = i;
   stop += 2;
   if (stop > 100) {clearInterval(acao);}
   i++;
   if (i == 5) {i = 0;}
}
var acao = window.setInterval('teste()',6000);
window.onload = teste;
</script>

</head>
<body>

<div id="teste"></div>

</body>
</html>

 

:unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

:mellow: pois é, nessa eu estou boiando, me explique o porque de você ter que chamar um setInterval dentro da função, tipo... se fosse um outro faria logica, mais porque chamar a mesma??? :wacko: rsrsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Explique qual a tua necessidade.

 

<html>
<head>
<title>teste</title>

<script type="text/javascript">
var i = 0;
function teste() {
document.getElementById('teste').innerHTML += i+'<br />';       
i++;
}
window.setInterval(teste, 500);
window.onload = teste;
</script>

</head>
<body>

<div id="teste"></div>

</body>
</html>

Se não ficará bem dificil ajudarmos.

Até onde entendi, o script acima resolve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lembrando que um setInterval de 40ms, na maioria das vezes, não será executado nesse tempo, o timer do Javascript não é preciso, se tiver alguma tarefa por ser executada, o interval tera que esperar esta tarefa completar, então não vejo vantagem em usar um tempo tão curto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vejamos galera, estou fazendo um SlideShow. E para isso preciso de um setInterval para fazer o loop das imagens e outro dentro para fazer o loop do efeito!

 

Abaixo está o exemplo com dois alert(i); da qual você perceberá que o primeiro mostrará o valor do da var i; ceto, mas o segundo alert(i); que está dentro do setInterval que fara o loop do efeito, está mostrando o valor da var i; somado de mais um, ou seja, o primeiro alert mostra o valor 0 e o segundo mostra 1.

 

Peço que não tentem modificar a lógica do código e sim faze-lo funcionar da forma em que se encontra. Pós realmente necessito desta lógica!!! Pós também irei utiliza-lo em outro scritp...

 

 

<html>
<head>
<title>Simple Javascript Slideshow</title>
<script language="javascript">
var i = 0;
function slideShow() {
var img = document.getElementById('background').getElementsByTagName('img');

alert(i);

var opacityIn = 0;
var fadeIn = setInterval(function() {

       alert(i);

	img[i].style.opacity = opacityIn/100;
	img[i].style.filter = "alpha(opacity="+ opacityIn +")";

	if (opacityIn == 100) {clearInterval(fadeIn);}
	opacityIn += 2;
}, 40);

img[i].style.display = 'block';

if (i == 1) {i = 0;}
i++;
}
window.setInterval('slideShow()',6000);
window.onload = slideShow;
</script>

</head>
<body>

<div id="background">
<img src="1.jpg" />
<img src="2.jpg" />
</div>

</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

o escopo é o mesmo, use outra letra.

 

um j, k... qq coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.