Foros del Web » Programando para Internet » Jquery »

Invalid argument. jquery-1.3.2.js, line 1061 character 4 - jquery error con IE7 y 8

Estas en el tema de Invalid argument. jquery-1.3.2.js, line 1061 character 4 - jquery error con IE7 y 8 en el foro de Jquery en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 20/11/2009, 16:27
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 16 años, 4 meses
Puntos: 4
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/11/2009 a las 16:37
  #2 (permalink)  
Antiguo 21/11/2009, 08:46
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
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.
  #3 (permalink)  
Antiguo 23/11/2009, 09:30
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 16 años, 4 meses
Puntos: 4
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/11/2009 a las 11:09
  #4 (permalink)  
Antiguo 23/11/2009, 11:29
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
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
  #5 (permalink)  
Antiguo 23/11/2009, 11:50
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 16 años, 4 meses
Puntos: 4
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...
  #6 (permalink)  
Antiguo 23/11/2009, 12:12
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 16 años, 4 meses
Puntos: 4
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...
  #7 (permalink)  
Antiguo 23/11/2009, 15:00
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 16 años, 4 meses
Puntos: 4
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
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:55.