Ir para conteúdo

POWERED BY:

Arquivado

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

Paulo Freitas Nobrega

Problema com setTimeout

Recommended Posts

E ai pessoal, sou novato em javascript e tal, estou tentando fazer um letrero que passará titulos que notícias selecionadas através de um banco de dados com ajuda do XMLHttpRequest. O código esta quase certo o problema é o seguinte, a primeira vez que o código é executado o setTimeout fica com velocidade 100 com eu declarei no código, mas a partir da 2ª vez que o código é executado a velocidade vai aumentando graduativamente sem parar. Alguém sabe como faço para corrigir isso?

 

 

A página onde contem o java script:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Letreiro digital</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><script type='text/javascript' src='x_core.js'></script> <script language="javascript">var xmlhttp = conn();function conn() {	var req;	try { 	req = new ActiveXObject("Microsoft.XMLHTTP");	} catch(e) {		try {		req = new ActiveXObject("Msxml2.XMLHTTP");		} catch(ex) {			try {			req = new XMLHttpRequest();			} catch(exc) {			alert("Esse browser não tem recursos para uso do Ajax");			req = null;			}		}	}	return req;}function news(inicio) {						xmlhttp.open("GET", "news.php?inicio=" + inicio, true);	xmlhttp.onreadystatechange = function() {		if(xmlhttp.readyState==4) {			texto = xmlhttp.responseText;			ini = inicio;			anima_texto()		}	}	xmlhttp.send(null);		}var pos = 0;function movimento() {		pos = pos + 1;	if(pos == texto.length) {				pos = 0				if(ini < 2) {			inicio = ini + 1;			news(inicio) 		} else {			news(0);		}				return texto	} else {		return texto.substring(0,pos)	}}function anima_texto(){		xInnerHtml('box_text',movimento()) 	setTimeout("anima_texto()", 100)}</script></head><body onload="news(0);"><div id="box_text"></div></body></html>

Aqui o php que captura as noticias:

<?php// Este primeiro header, corrigi o problema de acentuação dos caracteres.header('Content-Type: text/html; charset=iso-8859-1');// Os dois headers seguintes, evitam que a página seja armazenada em cache no navegador.header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the pastinclude "../blog/conn.php";$sql = "SELECT * FROM blog_notas ORDER BY id DESC LIMIT $_GET[inicio],1";$result = mysql_query($sql);$myrow = mysql_fetch_array($result);echo $myrow["chapeu"];?>

Aguardo as resposta...

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi Paulo,aquele numero esta correto? 100 milessegundos mesmo???se for, provavelmente o tempo esta dobrando pq nao da tempo de processar e o metodo ja foi chamado novamente.. e ai vai acumulando...tem q ver se nao vai chamar o metodo novamente antes do php terminar de interagir com o banco de dados e dar uma resposta.sabe como eh... velocidade internet... numero de acessos ao banco...talvez seja melhor aumentar o tempo de chamada.verifica se eh isso ai,t+

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.