Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

¿Qué está mal en esta línea?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Javascript
Mensaje Mar Jun 19, 2007 12:02 pm
erml_
Perlero Nuevo
Perlero Nuevo
Registrado: 30 May 2007
Mensajes: 5
¿Qué está mal en esta línea? Responder citando

Saludos

Tengo una función 'x' hecha en JavaScript, recibe un valor, y se encuentra en el fichero 'funciones.js'.
Intento llamar a la función que les mencioné, desde una página 'y.html' usando la siguiente línea:

HTML:
<a href="./directorio/funciones.js"  onclick="x(89);" >-FUNCION X-</a>


Al dar clic en el vínculo, quiero que se ejecute la función x, pero en su lugar solo me muestra todo el código del fichero 'funciones.js'. Coloqué un alert() dentro de la función 'x' para indicar que ha llegado a la función. Sí funciona ese alert, pero inmediatamente después me muestra todo el contenido del fichero.

¿Qué estoy haciendo mal?

Gracias y hasta pronto.
Mensaje Mar Jun 19, 2007 3:23 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 3913
Ubicación: Valladolid, España
Responder citando

Se supone que cuando se llega a esa línea, funciones.js ha sido parseado por el cliente web porque habrás puesto líneas antes una línea del tipo siguiente:

Perl:
<script language="javascript" src="./directorio/funciones.js"></script>


De esa forma, el motor de JavaScript podrá saber dónde está definida la función x().

Pero otro tema distinto es la forma de invocarla. Usas una marca <a>, que por resultado es el 'salto' a otra página. Y pones que ese salto sea a la propia página funciones.js.

Lo que ocurre es: Ocurre el evento OnClick que llama a la función x(), y a continuación, el cliente web 'salta' a funciones.js.

Hay varias formas de evitarlo.
* En el atributo src del <a>, poner '#' (sin las comillas). De esa manera sigue siendo un enlace, pero no 'saltará' a ninguna página.
* En el atributo OnClick, modificarlo para que devuelva un valor falso:
onclick="x(89); return false;" Esto tiene como efecto colateral que el efecto de 'salto' tampoco se produce.
* Usar otro elemento que dispare eventos del ratón pero sin efectos secundarios (no usar <a>).
Mensaje Lun Jun 25, 2007 4:40 pm
erml_
Perlero Nuevo
Perlero Nuevo
Registrado: 30 May 2007
Mensajes: 5
Responder citando

saludos explorer.

Así es, agregando "return false" ya no muestra el contenido de la página y entra a la función que necesito.

Gracias por la ayuda. Hasta pronto.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Javascript Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group