Foros del Web » Programando para Internet » Javascript »

Error se esperaba un objeto

Estas en el tema de Error se esperaba un objeto en el foro de Javascript en Foros del Web. Tengo una funcion de javascript para subir y bajar por una barra vertical. No tengo ni idea de javascript, haber si pueden echarme una mano. ...
  #1 (permalink)  
Antiguo 03/10/2007, 04:36
 
Fecha de Ingreso: marzo-2005
Ubicación: Madrid
Mensajes: 233
Antigüedad: 19 años, 1 mes
Puntos: 5
Error se esperaba un objeto

Tengo una funcion de javascript para subir y bajar por una barra vertical. No tengo ni idea de javascript, haber si pueden echarme una mano.

El error es : Se esperaba un objeto

El codigo fuente javascript :
Código:
function bajar()
{
	/*alert('boton abajo')*/
	var desplazamiento;
	var despPix=70
	
	desplazamiento = document.getElementById('CajaClasifica10').style.top.substr(0,document.getElementById('CajaClasifica10').style.top.length - 2);
	if ((Number(desplazamiento) - 10) > 395)
	{
	/*alert( desplazamiento)*/

		desplazamiento = document.getElementById('CajaClasifica1').style.top.substr(0,document.getElementById('CajaClasifica1').style.top.length - 2);
		desplazamiento = Number(desplazamiento) - despPix;
		document.getElementById('CajaClasifica1').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica2').style.top.substr(0,document.getElementById('CajaClasifica2').style.top.length - 2);
		desplazamiento = Number(desplazamiento) - despPix;
		document.getElementById('CajaClasifica2').style.top = desplazamiento + "px";
		
	
		desplazamiento = document.getElementById('CajaClasifica3').style.top.substr(0,document.getElementById('CajaClasifica3').style.top.length - 2);
		desplazamiento = Number(desplazamiento) - despPix;
		document.getElementById('CajaClasifica3').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica4').style.top.substr(0,document.getElementById('CajaClasifica4').style.top.length - 2);
		desplazamiento = Number(desplazamiento) - despPix;
		document.getElementById('CajaClasifica4').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica5').style.top.substr(0,document.getElementById('CajaClasifica5').style.top.length - 2);
		desplazamiento = Number(desplazamiento) - despPix;
		document.getElementById('CajaClasifica5').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica6').style.top.substr(0,document.getElementById('CajaClasifica6').style.top.length - 2);
		desplazamiento = Number(desplazamiento) - despPix;
		document.getElementById('CajaClasifica6').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica7').style.top.substr(0,document.getElementById('CajaClasifica7').style.top.length - 2);
		desplazamiento = Number(desplazamiento) - despPix;
		document.getElementById('CajaClasifica7').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica8').style.top.substr(0,document.getElementById('CajaClasifica8').style.top.length - 2);
		desplazamiento = Number(desplazamiento) - despPix;
		document.getElementById('CajaClasifica8').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica9').style.top.substr(0,document.getElementById('CajaClasifica9').style.top.length - 2);
		desplazamiento = Number(desplazamiento) - despPix;
		document.getElementById('CajaClasifica9').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica10').style.top.substr(0,document.getElementById('CajaClasifica10').style.top.length - 2);
		desplazamiento = Number(desplazamiento) - despPix;
		document.getElementById('CajaClasifica10').style.top = desplazamiento + "px";
	}		
}



function subir( )
{
	/*alert('boton arriba')*/

	var desplazamiento;
	var despPix=70;
	
	/*alert(document.getElementById('CajaClasifica').style.top)*/
	desplazamiento = document.getElementById('CajaClasifica1').style.top.substr(0,document.getElementById('CajaClasifica1').style.top.length - 2);
	desplazamiento = Number(desplazamiento) + despPix;
		
	if ( (Number(desplazamiento) + 10) < 15 )
	{
		/*alert( desplazamiento)*/
		
		document.getElementById('CajaClasifica1').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica2').style.top.substr(0,document.getElementById('CajaClasifica2').style.top.length - 2);
		desplazamiento = Number(desplazamiento) + despPix;
		document.getElementById('CajaClasifica2').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica3').style.top.substr(0,document.getElementById('CajaClasifica3').style.top.length - 2);
		desplazamiento = Number(desplazamiento) + despPix;
		document.getElementById('CajaClasifica3').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica4').style.top.substr(0,document.getElementById('CajaClasifica4').style.top.length - 2);
		desplazamiento = Number(desplazamiento) + despPix;
		document.getElementById('CajaClasifica4').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica5').style.top.substr(0,document.getElementById('CajaClasifica5').style.top.length - 2);
		desplazamiento = Number(desplazamiento) + despPix;
		document.getElementById('CajaClasifica5').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica6').style.top.substr(0,document.getElementById('CajaClasifica6').style.top.length - 2);
		desplazamiento = Number(desplazamiento) + despPix;
		document.getElementById('CajaClasifica6').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica7').style.top.substr(0,document.getElementById('CajaClasifica7').style.top.length - 2);
		desplazamiento = Number(desplazamiento) + despPix;
		document.getElementById('CajaClasifica7').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica8').style.top.substr(0,document.getElementById('CajaClasifica8').style.top.length - 2);
		desplazamiento = Number(desplazamiento) + despPix;
		document.getElementById('CajaClasifica8').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica9').style.top.substr(0,document.getElementById('CajaClasifica9').style.top.length - 2);
		desplazamiento = Number(desplazamiento) + despPix;
		document.getElementById('CajaClasifica9').style.top = desplazamiento + "px";
		
		desplazamiento = document.getElementById('CajaClasifica10').style.top.substr(0,document.getElementById('CajaClasifica10').style.top.length - 2);
		desplazamiento = Number(desplazamiento) + despPix;
		document.getElementById('CajaClasifica10').style.top = desplazamiento + "px";
	}
}
La forma de llamar a las funciones :

onmouseup="javascript:subir();
onmouseup="javascript:bajar();

dentro de una etiqueta div.

El error se produce cuando hay menos de 5 elementos en la lista.

Gracias de antemano por su ayuda
  #2 (permalink)  
Antiguo 03/10/2007, 06:15
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Error se esperaba un objeto

Hola ikarush:

Veo muchas líneas iguales repetidas que se pueden meter dentro de un bucle. Creo que este código haría exactamente lo mismo con menos líneas y más cómodamente (a ciegas):
Código PHP:
function bajar() {
    var 
desplazamiento;
    var 
despPix=70
    
var elObj document.getElementById('CajaClasifica10');
    
desplazamiento elObj.style.top.substr(0,elObj.style.top.length 2);
    if ((
Number(desplazamiento) - 10) > 395) {
        for(var 
i=1i<=10i++) {
            
elObj document.getElementById('CajaClasifica'+i);
            
desplazamiento elObj.style.top.substr(0,elObj.style.top.length 2);
            
desplazamiento Number(desplazamiento) - despPix;
            
elObj.style.top desplazamiento "px";
        }
    }        
}



function 
subir( ) {
    var 
desplazamiento;
    var 
despPix=70;
    var 
elObj document.getElementById('CajaClasifica1')
    
desplazamiento elObj.style.top.substr(0,elObj.style.top.length 2);
    
desplazamiento Number(desplazamiento) + despPix;
    if ( (
Number(desplazamiento) + 10) < 15 ) {
        
elObj.style.top desplazamiento "px";
        for(var 
i=2i<=10i++) {
            
elObj document.getElementById('CajaClasifica'+i);
            
desplazamiento elObj.style.top.substr(0,elObj.style.top.length 2);
            
desplazamiento Number(desplazamiento) - despPix;
            
elObj.style.top desplazamiento "px";
        }
    }

Cita:
Iniciado por ikarush
El error se produce cuando hay menos de 5 elementos en la lista.
Lo que debes probar es si existen todos los elementos HTML que tengan por valor del atributo id CajaClasificaX siendo la X un número entre el 1 y el 10 incluidos. Tienen que existir todos esos elementos para que el script funcione como debe, ya que se hacen llamadas a todos esos elementos.


Nos ayudaría mucho el HTML que le acompaña.


Cita:
Iniciado por ikarush
La forma de llamar a las funciones :

onmouseup="javascript:subir();
onmouseup="javascript:bajar();
Puedes eliminar sin problemas el javascript: de dentro de esos atributos, es más recomendable.


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 03/10/2007, 08:49
 
Fecha de Ingreso: septiembre-2007
Mensajes: 26
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: Error se esperaba un objeto

Si además nos das la línea donde ocurre el error es posible que podamos ayudarte.
Está claro que el error se debe dar en una de las lineas
desplazamiento = document.getElementById('CajaClasificaX')...
ya que es el primer getElement de cada bloque donde no lo encuentra (devuelve un null (type of 'undefined').
Comprueba en el HTML los atributos ID de esos elementos, según parece debe existir desde 'CajaClasifica1' hasta 'CajaClasifica10'
  #4 (permalink)  
Antiguo 04/10/2007, 01:34
 
Fecha de Ingreso: marzo-2005
Ubicación: Madrid
Mensajes: 233
Antigüedad: 19 años, 1 mes
Puntos: 5
Re: Error se esperaba un objeto

Gracias a los 2, efectivamente el error ocurre cuando hay menos de 10 elementos.

La verdad que no tengo ni idea de javascript, y me habian pasado este marron.

Ahora veamos en php por ejemplo yo podria poner

en lugar de la linea :
Código:
for(var i=2; i<=10; i++)
esta otra :
Código:
while (isset (document.getElementById('CajaClasifica'+i)))){
... 
...
i++;
}
y asi evitaria el error.
¿cual seria la sintaxis en javascript?.

PD: El html no aporta informacion.
  #5 (permalink)  
Antiguo 04/10/2007, 09:20
 
Fecha de Ingreso: marzo-2005
Ubicación: Madrid
Mensajes: 233
Antigüedad: 19 años, 1 mes
Puntos: 5
Re: Error se esperaba un objeto

¿Perdonen entonces como debo dejarlo para que no salte el error.?

Gracias por su tiempo.

Un saludo
  #6 (permalink)  
Antiguo 04/10/2007, 16:19
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Error se esperaba un objeto

Hola de nuevo:

Se podría hacer por ejemplo con un try & catch, en el momento que dé error por primera vez, paramos de buscar más elementos (a parte de no mostrar el error):

Código PHP:
<div id="capa1">hola</div>
<
div id="capa2">que</div>
<
div id="capa3">tal</div>
<
div id="capa4">estas</div>

<
script type="text/javascript">
<!--


for(var 
i=1elemi<10i++) {
    try {
        
elem document.getElementById("capa"+i);
        
elem.style.color "red";
    } catch(
err) {
        
// No hacemos nada si hemos capturado un error, pero sí salimos del bucle
        
break;
    }
}


// -->
</script> 


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #7 (permalink)  
Antiguo 05/10/2007, 01:32
 
Fecha de Ingreso: marzo-2005
Ubicación: Madrid
Mensajes: 233
Antigüedad: 19 años, 1 mes
Puntos: 5
Re: Error se esperaba un objeto

gracias por la ayuda!
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 19:13.