Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/11/2011, 14:19
Avatar de bNd170
bNd170
 
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 15 años, 2 meses
Puntos: 13
Respuesta: Uncaught RangeError: Maximum call stack size exceeded

Muy bien...

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $contador = "1";
  3.     $tiempo_entre_fases = 7000; // Tiempo de la animacion de la barra
  4.     $ancho_total = $('#slider_novedad').css('width'); // Esto son parametros para la animacion
  5.     $ancho_por_miniatura = parseInt(parseInt($ancho_total) / parseInt($totalID))-6;
  6.     $('div#miniaturas div.opciones').css({"width" : $ancho_por_miniatura+"px"});
  7.     $ancho = $('div.opciones').css('width');
  8.     $tiepo_por_pixel = $tiempo_entre_fases / parseInt($ancho);
  9.  
  10.     function progresa($contenedor,$ancho_actual,$tiempo_estipulado) {
  11.         $tiempo = parseInt(defecto($tiempo_estipulado, $tiempo_entre_fases, false));
  12.         $reseteamos = defecto($ancho_actual, 'true', true);
  13.         if($reseteamos=="true") {
  14.             $('div.barras').stop(true,true);
  15.             $('div.barras').css({width:"0px"});
  16.         }
  17.         $($contenedor).animate(
  18.             {width:$ancho},
  19.             $tiempo,
  20.             function() {
  21.                 if($contador==$totalID) $contador = "0";
  22.                 $contador++;
  23.                 $(".syncmedia div.mediacontainer").scrollTo('#to'+$contador ,800);
  24.                 progresa('div#opcion'+$contador+' div.barras');
  25.             }
  26.         );
  27.     }
  28.  
  29.     progresa('div#opcion'+$contador+' div.barras');
  30.  
  31. // Esto hace que al pasar el mouse por encima de la imagen, la animacion se pause
  32.     $('.syncmedia').mouseover(function() {
  33.         $('div.barras').stop();
  34.     });
  35.  
  36. // Retoma la animacion cuando sacamos el mouse de la imagen
  37.     $('.syncmedia').mouseout(function() {
  38.         $tiepo_a_esperar = $tiempo_entre_fases-(parseInt($('div#opcion'+$contador+' div.barras').css('width'))*$tiepo_por_pixel);
  39.         progresa('div#opcion'+$contador+' div.barras', $('div#opcion'+$contador+' div.barras').css('width'),$tiepo_a_esperar );
  40.     });
  41.  
  42. // Para poder usar el menú de movimiento entre imagenes
  43.     $('div.opciones').click(function() {
  44.         $('div.barras').stop();
  45.         $div_actual = '#'+$(this).attr('id');
  46.         $contador = $div_actual.substr($div_actual.length - 1,$div_actual.length);
  47.         $(".syncmedia div.mediacontainer").scrollTo('#to'+$contador ,800);
  48.         progresa($div_actual + 'div.barras');
  49.     });
  50.  
  51.        
  52.     // Funcion para hacer parametros por defecto
  53.     //valor (contiene el valor actual del parámetro), defecto (contiene el valor por defecto)
  54.     //quiero_null (especifica si deseamos controlar algo especial, en este caso el valor 'undefined' ,
  55.     //                posibles valores true o false, por defecto adquiere false)
  56.     function defecto($valor, $defecto, $quiero_null){
  57.         $quiero_null = $quiero_null || false;
  58.         if ($quiero_null){
  59.             $valor = (typeof $valor == 'undefined') ? $defecto : $valor;
  60.         }else{
  61.             $valor = $valor || $defecto;
  62.         }
  63.         return $valor;
  64.     }
  65. });

Código HTML:
<div id="slider_novedad">
    <div class="syncmedia">
		<div class="mediacontainer">
			<a href="link">
                            <div id="to1" style="background-image: url(imagen)">
                                <div id="detalles">
                                   <div id="titulo">Titulo</div>
                                   <div id="texto">Texto</div>
                                </div>
                           </div>
                        </a>	
	         </div>
		<div class="mediacontainer">
			<a href="link">
                            <div id="to2" style="background-image: url(imagen)">
                                <div id="detalles">
                                   <div id="titulo">Titulo</div>
                                   <div id="texto">Texto</div>
                                </div>
                           </div>
                        </a>	
	         </div>
	</div>	
    <div id="miniaturas">
	<div class="opciones" id="opcion1" class="active" >
		<div id="txt">Titulo</div>
		<div id="progressbar">
			<div class="barras"></div>
		</div>
	</div>
	</div>
</div> 

Explico un poco lo que hace.

Dispone de un div para mostrar las imagenes que hace un scrollTo() cada 7000 milisegundos, en esos 7000 milisegundos añado una animacion a una barrita para darle mas apariencia, añadiendo un callback a la funcion jquery de animate();