Foros del Web » Programando para Internet » Javascript »

error "no es una función"

Estas en el tema de error "no es una función" en el foro de Javascript en Foros del Web. Muy buenas. Me he encontrado con un problema un tanto raro al trabajar con un archivo externo .js y por más que he buscado una ...
  #1 (permalink)  
Antiguo 01/08/2009, 12:39
 
Fecha de Ingreso: abril-2006
Ubicación: De vuelta en Asturias
Mensajes: 209
Antigüedad: 18 años
Puntos: 1
error "no es una función"

Muy buenas.

Me he encontrado con un problema un tanto raro al trabajar con un archivo externo .js y por más que he buscado una solución no consigo encontrarla, así que me he decidido a consultar aquí, que está lleno de expertos

Estoy trabajando sobre un archivo .php donde, entre otras cosas, recojo unos datos de una base de datos, creo un menú y mi intención es que al hacer clic sobre cada opción, se cambié la imagen mostrada.

Hasta aquí todo va muy bien pero aquí llega el pero. Cuando añado el onclick al enlace correspondiente, el cual llama a una función colocada en un archivo .js externo, el firebug me dice que dicha función no está definida.

Algo está mal escrito verdad? Pues no, porque si la llamada la hago desde le propio archivo .js o copio la función en el archivo .php entonces funciona bien. De hecho he añadido varios eventos en dicho archivo .js (trabajo con mootools y lo hago mediante $().addEvent) y todo funciona correctamente.

Pensé en crear un array con los datos obtenidos de la consulta a la base de datos y añadir los eventos mediante un bucle for (no sé el nº de elementos que voy a tener en cada caso, por eso no puedo hacerlo directamente), pero en ese caso solamente funciona el del último elemento.

Y antes de seguir buscando soluciones raras, pensé en preguntar si alguien conoce la razón por la que no se reconocen las funciones cuando las llamo desde el archivo .php

la llamada la hago así: <a href="#" onclick="funcion();">... (he probado con el punto y coma (;) y sin él)
y la función la declaro en el js: function funcion(){...}

Espero que a alguien se le ocurra a que puede ser debido, o una solución para poder añadir los eventos.

Un saludo y gracias de antemano
  #2 (permalink)  
Antiguo 03/08/2009, 00:53
 
Fecha de Ingreso: febrero-2009
Mensajes: 102
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: error "no es una función"

A mi siempre que me ha pasado eso ha sido porque había algún error en la función a la que llamas. Que falte un punto ycoma, llaves mal cerradas y cosas así. Pero sin ver el código es dificil saberlo.

Revisa bien tu función.
  #3 (permalink)  
Antiguo 04/08/2009, 15:14
 
Fecha de Ingreso: abril-2006
Ubicación: De vuelta en Asturias
Mensajes: 209
Antigüedad: 18 años
Puntos: 1
Respuesta: error "no es una función"

Ante todo, muchas gracias por responder.

He probado comentando todo el contenido del archivo y creando una simple función que llamase un alert. Igual falló.
Además se supone que los archivos de mootools están correctos y sin embargo tampoco funcionan los método que llamo de esa librería.
Es muy extraño porque si escribo $('mi_elemento').propiedad entonces funciona, por ejemplo cambio la imagen de un div con $('mi_elemento').src
Pero si en lugar de una propiedad utilizo un método, por ejemplo $('mi_elemento').scrollTo() entonces no me reconoce scrollTo
Y como ya comenté antes si en dicho archivo externo creo un evento que no llame ninguna función, , como antes, algo tan simple como llamar un alert, también funciona correctamente
La verdad que no entiendo nada
Un saludo
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 11:28.