Foros del Web » Programando para Internet » Javascript »

error con indexof

Estas en el tema de error con indexof en el foro de Javascript en Foros del Web. hola gente, tengo el error "el objeto no acepta esa propiedad o metodo" en la linea que marco en rojo. el array se carga en ...
  #1 (permalink)  
Antiguo 23/07/2008, 14:33
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años
Puntos: 2
error con indexof

hola gente, tengo el error "el objeto no acepta esa propiedad o metodo" en la linea que marco en rojo.

el array se carga en la funcion agregarAutorInstitucional cuando mando a eliminar me da dicho error.

muchas gracias desde ya



Código HTML:
var cuil_autor = new Array()

function eliminarAutorInstitucional(cuil)
{
	//elimino de los dos vectores el autor y el cuil que se corresponda con el recibido por parametro
	
	[COLOR="Red"]var index = cuil_autor.indexOf(cuil); [/COLOR]//obtengo el indice del cuil
	//elimino el autor de la posicion indicada
	autorInstitucional.splice(index,1);
	cuil_autor.splice(index,1);
	
	}

function agregarAutorInstitucional(cuil,nombre)
{
	autorInstitucional.push(nombre);
	cuil_autor.push(cuil);
}
  #2 (permalink)  
Antiguo 23/07/2008, 16:36
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: error con indexof

revisé tu codigo y hay 2 cosas:

1. El array autorInstitucional no esta definido.
2. el metodo indexOf es del objeto String no de Array, por eso no te funcionaba Ojo

Talvez te funcione así, pruébalo y me cuentas que paso..

Código:
var cuil_autor = new Array();
var autorInstitucional = new Array();

function eliminarAutorInstitucional(cuil)
{
	for(var i=0;i<cuil_autor.length;i++){
		if(cuil_autor[i]==cuil){
			cuil_autor.splice(i,1);
			autorInstitucional.splice(i,1);
		}
	}
}

function agregarAutorInstitucional(cuil,nombre)
{
	autorInstitucional.push(nombre);
	cuil_autor.push(cuil);
	alert(autorInstitucional.length+" "+cuil_autor.length);
}
Saludos y Suerte...
  #3 (permalink)  
Antiguo 24/07/2008, 06:54
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años
Puntos: 2
Respuesta: error con indexof

ahora si.

gracias hermano

saludos
  #4 (permalink)  
Antiguo 24/07/2008, 08:31
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
Respuesta: error con indexof

Cita:
Iniciado por Un_Tico Ver Mensaje
2. el metodo indexOf es del objeto String no de Array, por eso no te funcionaba Ojo
Me temo que en Firefox (o cualquier navegador que soporte javascript 1.6) sí existe indexOf como método de Array.

Array.indexOf() en developer de mozilla.org

No hay más que probar este código en FF (yo tengo el 3 y me funciona):
Código PHP:
alert( ["Uno""Dos""Tres""Cuatro"].indexOf("Tres") ); 

Saludos!
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #5 (permalink)  
Antiguo 24/07/2008, 11:44
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: error con indexof

Código:
alert( ["Uno", "Dos", "Tres", "Cuatro"].indexOf("Tres") );
Mmmm... si parece que tu código si funciona en FF pero lo probé en IE y no funciona muy bien,

Segun: http://w3schools.com/jsref/jsref_obj_array.asp

Ese método no está disponible para el objeto array.... Revísalo y me cuentas

Saludos...
  #6 (permalink)  
Antiguo 24/07/2008, 14:39
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
Respuesta: error con indexof

Cita:
Iniciado por Un_Tico Ver Mensaje
Mmmm... si parece que tu código si funciona en FF pero lo probé en IE y no funciona muy bien,

Segun: http://w3schools.com/jsref/jsref_obj_array.asp

Ese método no está disponible para el objeto array.... Revísalo y me cuentas
Cita:
Iniciado por derkenuke Ver Mensaje
Me temo que en Firefox (o cualquier navegador que soporte javascript 1.6) sí existe indexOf como método de Array
No he encontrado por ningún lado las especificaciones de IE acerca de la versión de javascript que es capaz de ejecutar, pero me suena que 1.2. En la referencia del w3 que me pasas tampoco encuentro de qué versión hablan.

Pero como ya digo, depende de la versión. Existen muchos más métodos para un array de los que se menciona en la w3 (supongo que versión actual 1.2): indexOf, lastIndexOf, filter, forEach, every, map, some, reduce y reduceRight son los que muestran ahí. Pero me temo que por culpa de IE no podemos evolucionar hacia versiones más nuevas de javascript.

En IE7 no sé si funciona el código, no lo tengo.

Saludos
__________________
- 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 24/07/2008, 15:30
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: error con indexof

Yo probé tu código en FF,IE6,IE7,OPERA,NS,SAFARI y funcionó en un 40%(te puedes imaginar en cuales) de estos navegadores, derkenuke tienes razón con lo de las versiones y todo eso pero recuerda que tus aplicaciones deben correr en todos los navegadores y en esos esta el IE que es el más usado.

Personalmente prefiero FF por obvias razones, w3schools.com es una buena fuente de consulta para este tipo de cosas.

Saludos...
  #8 (permalink)  
Antiguo 24/07/2008, 16:09
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
Respuesta: error con indexof

Cita:
Iniciado por Un_Tico Ver Mensaje
derkenuke tienes razón con lo de las versiones y todo eso pero recuerda que tus aplicaciones deben correr en todos los navegadores y en esos esta el IE que es el más usado.
Sí, eso siempre hay que tenerlo en cuenta. Para eso en el link que puse
http://developer.mozilla.org/en/docs...:Array:indexOf
está la manera de implementarlo en los navegadores que no lo tengan implementado:

Código PHP:
if (!Array.prototype.indexOf)
{
  Array.
prototype.indexOf = function(elt /*, from*/)
  {
    var 
len this.length;

    var 
from Number(arguments[1]) || 0;
    
from = (from 0)
         ? 
Math.ceil(from)
         : 
Math.floor(from);
    if (
from 0)
      
from += len;

    for (; 
from lenfrom++)
    {
      if (
from in this &&
          
this[from] === elt)
        return 
from;
    }
    return -
1;
  };


Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #9 (permalink)  
Antiguo 24/07/2008, 16:34
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: error con indexof

Mmmmm.... está claro lo que dices y se ve que sabes de lo que haces pero el código era para un principiante y me parece que lo que aportas si soluciona el problema pero es poco practico...

"Lo más complicado es hacerlo simple"

Saludos...
  #10 (permalink)  
Antiguo 24/07/2008, 17:30
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
Respuesta: error con indexof

Sí, es hacerlo quizás más complicado, pero no está de más dejarlo para que alguien que busque indexOf+array encuentre cosas útiles.

Para este caso en concreto quizás no mereciera la pena, a no ser que se utilizase varias veces.


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.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:50.