Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   HTML, Javascript y otros (https://www.clubdelphi.com/foros/forumdisplay.php?f=38)
-   -   ¿Como entender el signo "?" en Java Script? (https://www.clubdelphi.com/foros/showthread.php?t=38281)

Deiv 09-12-2006 15:24:11

¿Como entender el signo "?" en Java Script?
 
Hola,
Voy revisando algunos ejemplos de Java Script, me he tropezado con este problema, pues en la Red no encuentro mucha ayuda sobre el signo "?"
¿Como entender los códigos (trozos) de abajo?

Código PHP:

function handlerMM(e){
= (document.layers) ? e.pageX document.body.scrollLeft+event.clientX
= (document.layers) ? e.pageY document.body.scrollTop+event.clientY
flag
=1
}
 
document.onmousemove handlerMM

O este otro:
Código PHP:

  //..........
ns=(document.layers);
  
//........
var ML=(ns)?document.layers['nsMinutes'+i]:ieMinutes[i].style;
  
//..........
scrll=(ns)?window.pageYOffset:0;
  
//..........
function Mouse(evnt){
ymouse = (ns)?evnt.pageY+ClockFromMouseY-(window.pageYOffset):event.y+ClockFromMouseY;
xmouse = (ns)?evnt.pageX+ClockFromMouseX:event.x+ClockFromMouseX;
}
(
ns)?window.onMouseMove=Mouse:document.onmousemove=Mouse;
  
//......... 

- En el primer caso no veo que le pase un parámetro "e" y en el segundo tampoco el "evnt" ¿Es indiferente si en la función aparecen parámetros sin haber sido enviados al llamar a una función en Java Script?
- ¿Que hace el signo "?" en las funciones? ¿Cómo interpretarlo?

JavierB 09-12-2006 16:36:20

Hola Deiv

Es una versión abreviada de if Si se cumple la condición toma el valor que hay entre el signo de interrogación y los dos puntos, si no se cumple, toma el valor que hay a continuación de los dos puntos.

Código PHP:

= (document.layers) ? e.pageX document.body.scrollLeft+event.clientX 

Es lo mismo que poner:

Código PHP:

if (document.layers)
  
e.pageX
else
  
document.body.scrollLeft+event.clientX 

Saludos, :cool:

dec 09-12-2006 18:57:39

Hola,

Cita:

Empezado por Deiv
- En el primer caso no veo que le pase un parámetro "e" y en el segundo tampoco el "evnt" ¿Es indiferente si en la función aparecen parámetros sin haber sido enviados al llamar a una función en Java Script?

Fíjate que esas funciones no las vas a llamar tú, es decir, son funciones que responderán a un determinado tipo de evento. Es algo parecido a cuando codificas un prodecimiento en Delphi cuyo prototipo podría ser este:

Código Delphi [-]
procedure SeHizoClicEnElBoton(Sender: TObject);

Ese procedimiento podría asignársele al evento "OnClick" de un determinado botón, ¿verdad que sí? Puesto que el prototipo del procedimiento cumple con los requisitos para el evento "OnClick" del botón. Pero tú, normalmente, no vas a llamar al procedimiento pasándole como parámetro el "Sender" de turno, sino que será el propio "botón" el que llame a dicho procedimiento cuando se produzca su evento "OnClick", pasándole el "Sender" oportuno, es decir, el propio botón.

Pues lo que comentas arriba en JavaScript viene a ser parecido. Para el evento "OnKeyDown", por ejemplo, podrías asignar una determinada función fuera ejecutada cuando dicho evento se produzca. Pues bien, dicha función tendrá ya un parámetro que viene determinado por lo que "OnKeyDown" ofrezca... Pero yo no estoy muy puesto en JavaScript, como se puede ver.

Aquí tienes un ejemplo (www.w3schools.com) de cómo puede trabajarse con el evento "OnKeyDown". Fíjate como la función que se hará cargo del evento cuenta con un parámetro que a su vez recibirá los datos que el evento "OnKeyDown" ofrece. Fíjate también como dependiendo del navegador/cliente habrá que tratar de manera diferente dichos datos... y bienvenido al "Cross Browsing Scripting"... :D

roman 09-12-2006 20:04:34

Creo que no está de más aclarar que en los ejemplos que presentas, los condicionales están para distinguir un tipo de navegador de otro. En en el primer trozo de código:

Código:

function handlerMM(e){
  x = (document.layers) ? e.pageX : document.body.scrollLeft+event.clientX
  y = (document.layers) ? e.pageY : document.body.scrollTop+event.clientY
  flag=1
}

document.layers existe para Netscape pero no para IE. El efecto del condicional es valuar e.pageX en el caso de Netscape y lo demás en el caso de IE. Y hay que notar también el uso de e y event. IE maneja los eventos en la variable global event, que, siendo global, no aparece como parámetro del evento. En cambio Netscape y otros navegadores pasan el evento como parámetro.

// Saludos

Deiv 10-12-2006 00:31:58

Gracias, por vuestras respuestas, voy navegando en Internet y en verdad tal como dice Roman, hay que distinguir entre código IE y Netscape, Una consulta:
¿Conocen alguna Página donde diferencien o den ejemplos o una lista de comandos, propiedades, etc de IE y NetScape? Así podría estudiarlos.
Verán estoy autodidáctamente aprendiendo a construir mi página web y creo que lo estoy haciendo en forma desordenada, por ello sería bueno conocer esa diferencia que les menciono.

dec 10-12-2006 00:48:41

Hola,

Creo que podrías hacerte con algún libro sobre JavaScript. En Internet, desde luego, también vas a encontrar manuales, tutoriales, artículos, páginas Web, en fin, donde poder adentrarte en el tema. Por otro lado tal vez quieras usar un programa como Aptana para trabajar con JavaScript. Al estilo Delphi te ofrecerá cierta ayuda en su editor de código: autocompletado, ayuda contextual, listas de miembros de objetos, información sobre navegadores, etc., etc.

Deiv 10-12-2006 00:56:06

Gracias "tocayo" (David),
Tus sugerencias como de otros genios siempre han sido buenas. Esto de aprender a crear una página me está tomando tiempo que hice una pausa con Delphi.
Gracias muchachos, seguiré preguntando espero no se molesten....

Deiv 14-12-2006 16:12:09

Hola Dec,
He instalado Aptana, pero me sale este mensaje cada vez que deseo trabajar con el programa (no tengo conexión a Internet):
Cita:

Aptana requires Firefox 1.5+ for JavaScript debugging support.
Firefox could not be found at the default locations on this computer.
If You wish to debug JavaScript, please create a debug configuration with the correct Firefox path or download it from http://www.getfirefox.com
He instalado Firefox 2.0 en mi máquina creyendo que con esto estaba la solución, pero no puedo evitar ese mensaje. ¿Como evito ese mensaje? ¿es importante?

dec 14-12-2006 22:51:46

Hola,

Personalmente, omití el mensaje de que hablas, que también a mí me "salió". Se supone que Aptana necesita de Firefox 1.5 para depurar el JavaScript. Yo tengo instalada la versión 2.0 (como tú). Instalé Aptana omitiendo el mensaje que refieres y bueno, lo único que acaso no pueda utilizar sea el depurador que trae incorporado, pero, yo más bien te hablaba del editor de código, de la ayuda que este pudiera proporcionarte.

Así que instala Aptana pasando por encima de ese mensaje. O instala Firefox 1.5 (ignoro si podrás tener dos versiones de Firefox en el mismo sistema) y en todo caso tira hacia adelante. ;)

Deiv 15-12-2006 00:53:07

Yo también lo omito, y trabaja muy bien, pero en si lo que más me interesaba era eso precisamente el depurador de JavaScript, entiendo o supongo que ese depurador debe trabajar como en Delphi con la tecla F7?, pues ahí apuntaba ya que con este pensé que podía depurar algunos scripts, y encontrar posibles errores mios durante la confección de los mismos. De todas maneras con un P2P estoy bajando el Firefox 1.5, desinstalaré la v2.0 y veremos como trabaja.
Un saludo

Deiv 15-12-2006 23:11:57

Bueno he descargado Firefox 1.5.0.7, y no obtuve ningún resultado, pero leyendo bien el mensaje que aparece:

Cita:

If You wish to debug JavaScript, please create a debug configuration with the correct Firefox path
He ingresado al Menú Run-Debug... y he creado un: New_configuration, en la pestaña Main, elegí Browse y seleccioné el EXE del FireFox instalado en: C:\Archivos de programa\Mozilla Firefox\firefox.exe, luego hice click en el botón "Debug" y me lanzó un mensaje de todo OK, y ahora ya no aparece más dicho mensaje.

Me preguntaba si así de sencillo estaba, tal vez podía haberlo hecho con FireFox 2.0, volví a desinstalar la v1.5.0.7 para instalar la v2.0 y seguí los mismos pasos, si bien ya no tengo el Mensaje, no estoy convencido si la v2.0 aceptó "JavaScript debugging support", por lo que amigo dec te pido que compruebes estos pasos con tu versión ya que tu la tienes ahí nuevita, y luego me comentas?

dec 15-12-2006 23:19:36

Hola,

Es que no sé muy bien a qué te refires. Lo cierto es que instalé Aptana vía Eclipse, y lo hize omitiendo el "soporte para la depuración"... ahora entro en las opciones de Aptana en Eclipse y no veo dónde puedo mirar eso que dices... la verdad. Aunque, desde luego te digo que yo no utilizo el "depurador de JavaScript" en Aptana. Digamos que para el JavaScript que necesito me basto con la extensión FireBug para FireFox.

Deiv 15-12-2006 23:54:23

Bueno, como Yo no tengo conexión a Internet, Yo lo que hice es decargar Aptana, e instalar, luego para solucionar ese mensaje leí lo que coloqué en quote y solo me fuí al Menú de Aptana a la opción RUN, y ahí lo configuré Debug.
Bueno en fin solo era una curiosidad.


La franja horaria es GMT +2. Ahora son las 01:34:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi