3 millones en foros del web

Registrarte Políticas Wiki 120segs Ayuda Iniciar sesion

Avisos

Retroceder   Foros del Web > Programación para sitios web > Javascript > Frameworks y Plugins Javascript
Respuesta
 
Herramientas Desplegado
Antiguo 20-nov-2009, 15:27   #1 (permalink)
Un_Tico (Reg: julio-2008)
 
176 Mensajes
Ubicación: Cartago, Costa Rica
Un_Tico está desconectado
Invalid argument. jquery-1.3.2.js, line 1061 character 4 - jquery error con IE7 y 8

Hola a todos pues aqui vengo a pedir ayuda con javascript otra vez :P

El problema es este:

Quiero hacer una simple animacion de un menu como en acordeon que se despliegue a la derecha cuando cargue la pagina

para esto hice esto
html
Código HTML:
    <ul>
        <li>uno</li>
        <li>dos</li>
        <li>tres</li>
        <li>cuatro</li>
        <li>cinco</li>
	</ul>
css
Código HTML:
ul{
	display:block;
	overflow:hidden;
	padding:0px;
	margin:0px;
}
ul li{
	list-style-type:none;
	float:left;
	background-color:#666;
	margin-right:10px;
	position:relative;
	top:0px;
	padding:5px 10px;
}

Luego el javascript:

jquery
Código:
jQuery(document).ready(function($){
	var menu_node 		= null;								
	var menu_lenght 	= $("ul").children().length;
	var menu_elements	= $("ul").children();
	var total_widths 	= 0;
	var speed 			= 1000;
	
	for(i=0;i<menu_lenght;i++){
		menu_node 		= menu_elements[i];
		total_widths 	+= $(menu_node).outerWidth();
		total_widths 	+= parseInt($(menu_node).css("margin-left"),10);
		total_widths 	+= parseInt($(menu_node).css("margin-right"),10);
		$(menu_node).css({"left":"-"+total_widths+"px","z-index":i});
	}
	for(i=0;i<menu_lenght;i++){
		menu_node = menu_elements[i];
		$(menu_node).animate({left:"0px"},speed);
	}
});
Pues el problema es con IE8,IE7 el cual manda este error

Cita:
Invalid argument. jquery-1.3.2.js, line 1061 character 4
:S

he seguido el error con el debuger de IE8 y he llegado hasta aqui.

Cita:
1661: elem[ name ] = value;
la variable name viene vacia.

He econtrado que lo que genera el error en mi codigo es esta linea

Código:
$(menu_node).css({"left":"-"+total_widths+"px","z-index":i});
Aqui siguieren una solucion pero no me funciono, si alguien ve como puedo cambiar mi code o arreglar jquery estaria genial

Gracias de antemano y saludos

Última edición por Un_Tico; 20-nov-2009 a las 15:37
  Responder Citando
Antiguo 21-nov-2009, 07:46   #2 (permalink)
Colaborador
mayid (Reg: marzo-2009)
 
2.854 Mensajes
Ubicación: BsAs
mayid está desconectado
Respuesta: Invalid argument. jquery-1.3.2.js, line 1061 character 4 - jquery error c

z-index en jquery se escribe sin guion. Zindex (creo que la Z es mayuscula).

Proba eso.
  Responder Citando
Antiguo 23-nov-2009, 08:30   #3 (permalink)
Un_Tico (Reg: julio-2008)
 
176 Mensajes
Ubicación: Cartago, Costa Rica
Un_Tico está desconectado
Respuesta: Invalid argument. jquery-1.3.2.js, line 1061 character 4 - jquery error c

Gracias por contestar mayid pero ese no es el problema, el problema esta en el atributo left...

Ya lo habia probado solo con el left y es el left donde se genera el error!

Última edición por Un_Tico; 23-nov-2009 a las 10:09
  Responder Citando
Antiguo 23-nov-2009, 10:29   #4 (permalink)
Colaborador
mayid (Reg: marzo-2009)
 
2.854 Mensajes
Ubicación: BsAs
mayid está desconectado
Respuesta: Invalid argument. jquery-1.3.2.js, line 1061 character 4 - jquery error c

Bueno, entonces se me complica:

Cita:
total_widths += $(menu_node).outerWidth();
total_widths += parseInt($(menu_node).css("margin-left"),10);
total_widths += parseInt($(menu_node).css("margin-right"),10);
A esto no lo interpreto. Pero quizas te sirva saber que el plugin Dimensions ya esta incorporado en jquery y puede utilizarse para medir y colocar elementos en base a posiciones de otros:

http://docs.jquery.com/CSS // se llama positions
  Responder Citando
Antiguo 23-nov-2009, 10:50   #5 (permalink)
Un_Tico (Reg: julio-2008)
 
176 Mensajes
Ubicación: Cartago, Costa Rica
Un_Tico está desconectado
Respuesta: Invalid argument. jquery-1.3.2.js, line 1061 character 4 - jquery error c

Gracias por contestar nuevamente,

Te explico esas 3 lineas que Citas calculan el ancho mas el margen que tengan los elementos <li> de la lista asi para despues poder moverlos a el left y dejarlos totalmente ocultos

Ahora bien, si, el metodo position me devuelve la posicion del elemento, yo lo que necesito es un metodo para hacerle set a los left de los <li> de la lista porque es ahi exactamente donde se produce el error el IE, espero me haya explicado bien

Saludos...
  Responder Citando
Antiguo 23-nov-2009, 11:12   #6 (permalink)
Un_Tico (Reg: julio-2008)
 
176 Mensajes
Ubicación: Cartago, Costa Rica
Un_Tico está desconectado
Respuesta: Invalid argument. jquery-1.3.2.js, line 1061 character 4 - jquery error c

UPDATE:

He actualizado mi código para que sea mas legible...

Código:
jQuery.fn.extend({
	AnimateMenu:function(){
		var total_widths 	= 0;
		var speed 			= 1000;
		$(this).children().each(function(){
			total_widths 	+= $(this).outerWidth();
			total_widths 	+= parseInt($(this).css("margin-left"),10);
			total_widths 	+= parseInt($(this).css("margin-right"),10);
			$(this).css({left:"-"+(total_widths)+"px"});
		});
		$(this).children().each(function(){
			$(this).animate({left:"0px"},speed);									 
		});
	}						   
});
jQuery(document).ready(function($){
	$("ul").AnimateMenu();
});

Saludos...
  Responder Citando
Antiguo 23-nov-2009, 14:00   #7 (permalink)
Un_Tico (Reg: julio-2008)
 
176 Mensajes
Ubicación: Cartago, Costa Rica
Un_Tico está desconectado
Respuesta: Invalid argument. jquery-1.3.2.js, line 1061 character 4 - jquery error c

Código:
jQuery.fn.extend({
AnimateMenu:function(){
var total_widths = 0;
var speed = 1000;
$(this).children().each(function(){
total_widths += $(this).outerWidth();
if(!isNaN(parseInt($(this).css("margin-left"))))
total_widths += parseInt($(this).css("margin-left"),10); 
if(!isNaN(parseInt($(this).css("margin-right"))))
total_widths += parseInt($(this).css("margin-right"),10);
$(this).css({left:"-"+(total_widths)+"px"});
});
$(this).children().each(function(){
$(this).animate({left:"0px"},speed); 
});
} 
});
El problema estaba en que los atributos css de margin-left y margin right no estaban definidos, en firefox esto devuelve 0 pero en IE devuelve auto :S

Para evitar esto puse ese par de ifs para evitar que devuelva nah el fvck IE

Era tan simple que no lo pense, y yo ya estaba empezando a poner el traking para un ticket :P

SOLVED
  Responder Citando
Respuesta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code está Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado
Trackbacks está Desactivado
Pingbacks está Desactivado
Refbacks está Desactivado



La zona horaria es GMT -6. Ahora son las 21:11.
Políticas de Uso de Foros del Web


Message Board Statistics

SEO by vBSEO 3.3.2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106