Tallersecciona
Tallersecciona
Tallersecciona
Sección A
1
2 Generalmente, cuando trabajamos con Javascript nos encontramos con que tenemos
problemas a la hora de representar tildes o caracteres especiales en nuestras aplicaciones.
Por ejemplo, es frecuente que tengamos que mostrar un alert manteniendo el formato
original del texto, esto puede ser, con tildes, eñes o saltos de línea:
Para evitar estos errores, recurrimos al estándar UNICODE, una codificación diseñada para
facilitar la visualización de documentos en múltiples lenguajes preservando sus grafías y
caracteres originales.
La siguiente tabla muestra aquellos caracteres más utilizados en castellano:
Para introducir estos caracteres en nuestros scripts, tenemos que recurrir a la cadena de
escape ‘\u’ seguida de su correspondiente código. Así, nuestro ejemplo anterior quedaría
como sigue:
Para el resto de caracteres especiales, como los saltos de línea o las tabulaciones,
recurrimos al siguiente resumen:
* \n: Salto de linea.
* \r: Retorno de carro.
* \t: Tabulación horizontal.
* \v: Tabulación vertical.
* \’: Comilla simple o apostrofe.
* \”: Comilla doble.
* \\: Barra invertida.
Para utilizarlos, solo hace falta escribirlos tal cual. Así, para conseguir un mensaje con un
salto de línea, escribiríamos los siguiente:
Y obtendríamos:
Explicándolo de manera concisa, un doble igual lleva a cabo una conversión de tipo (cast)
cuando se comparan dos cosas; el triple igual hace lo mismo pero sin realizar ninguna
conversión de tipo (cast) (simplemente devuelve falso si los tipos de los elementos a
comparar son diferentes); Y Object.is funciona de la misma manera que el triple igual pero
hace una gestión especial de NaN, -0 y +0 de tal manera que los dos últimos no son iguales
mientras que Object.is(NaN, NaN) nos devolverá true. (Si comparamos NaN con NaN de
manera ordinaria , por ejemplo usando el doble igual o el triple igual, nos devolverá false, ya
que la especificación IEEE 754 así lo dice). Hay que darse cuenta de que la distinción entre
todas estas posibilidades tiene que ver con como se manejan los tipos primitivos; ninguna
de ellas compara si los parámetros son similares en relación a su estructura. Para comparar
dos objectos no primitivos , x e y, que tengan la misma estructura pero que sean objetos
diferentes entre ellos, todos los casos anteriormente descritos devolverán false.
¿Que son?
Ejemplo
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function Calcula(form) {
if (confirm("Seguro?"))
form.result.value = eval(form.expr.value)
else
alert("Reintentelo otra vez.")
}
</SCRIPT>
</HEAD>
<BODY>
<FORM>
Introduzca una expresión:
<INPUT TYPE="text" NAME="expr" SIZE=15 >
<INPUT TYPE="button" VALUE="Calcular" onClick="Calcula(this.form)">
<BR>
Resultado:
<INPUT TYPE="text" NAME="result" SIZE=15 >
<BR>
</FORM>
</BODY>
Ver Resultado
Tipos de Eventos
JavaScript 1.0
JavaScript 1.1
Cancelar Acciones
Un manejador de eventos puede cancelar las acciones a tomar a causa de un evento
si devuelve false.
Ejemplo: Temporizadores
<HTML>
<HEAD>
<TITLE>Contador</TITLE>
<SCRIPT LANGUAGE="JavaScript">
var contador;
var tId;
function Tic() {
contador--;
window.status= "Contador:" + contador;
if (contador > 0)
tId = setTimeout("Tic()", 1000);
else
alert ("Ring, ring")
}
function Iniciar(v) {
contador = v;
tId = setTimeout("Tic()", 1000);
}
function Parar() {
if (tId) {
clearTimeout(tId);
window.status= "Contador: Cancelado";
}
}
</SCRIPT>
</HEAD>
<BODY>
<HR>
<B>Contador</B>
<FORM>
Timer Value: <INPUT TYPE="text" NAME="cont" SIZE=5>
<HTML>
<HEAD>
<SCRIPT>
function Mensaje (msg) {
window.status = msg
}
</SCRIPT>
</HEAD>
<BODY>
Pasa por
<A HREF="" onMouseOver="Mensaje('dentro');return true"
onMouseOut="Mensaje('fuera');return true"
onClick="return false">encima</A>
para ver los efectos.
</BODY>
</HTML>
Ver Resultado
<HTML>
<BODY>
<FORM onSubmit="document.bgColor='#ffffff'">
Nombre: <INPUT NAME="nombre" SIZE=30
onFocus ="this.value = this.value.toLowerCase()"
onBlur ="this.value = this.value.toUpperCase()"
onChange="this.form.cambios.value++">
Cambios: <INPUT NAME="cambios" SIZE=5 VALUE=0><br>
<HTML>
<HEAD>
<SCRIPT>
function None() {alert ("Estado inicial");}
function One() {alert ("Estado 1");}
function Two() {alert ("Estado 2");}
function SetOne() {
document.f.b0.onclick=One
}
function SetTwo() {
document.f.b0.onclick=Two
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="f">
<INPUT TYPE="button" VALUE="0" NAME="b0" onClick="None()">
<INPUT TYPE="button" VALUE="1" NAME="b1" onClick="SetOne()">
<INPUT TYPE="button" VALUE="2" NAME="b2" onClick="SetTwo()">
</FORM>
</BODY></HTML>
5.
a. Para saber si un valor es numero o no utilizamos la función isNaN(numero),
si no es número devolverá True y si es número devolverá False.
Un ejemplo sería:
b. ParámetrosSección
cadena
Una cadena que representa el valor que se desea convertir.
base
Un entero que representa la base de la mencionada cadena.
DescripciónSección
parseInt es una función de alto nivel y no está asociada a ningún objeto.
La función parseInt comprueba el primer argumento, una cadena, e intenta devolver un
entero de la base especificada. Por ejemplo, una base de 10 indica una conversión a número
decimal, 8 octal, 16 hexadecimal, y así sucesivamente. Para bases superiores a 10, las letras
del alfabeto indican numerales mayores que 9. Por ejemplo, para números hexadecimales
(base 16), se utiliza de la A hasta la F.
Si parseInt encuentra un carácter que no es un numeral de la base especificada, lo ignora a
él y a todos los caracteres correctos siguientes, devolviendo el valor entero obtenido hasta
ese punto. parseInt trunca los números en valores enteros. Se permiten espacios anteriores
y posteriores.
Si no se especifica la base o se especifica como 0, JavaScript asume lo siguiente:
parseInt("F", 16);
parseInt("17", 8);
parseInt("15", 10);
parseInt(15.99, 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15*3", 10);
parseInt("12", 13);
Incluso aunque la base especificada es diferente, todos los siguientes ejemplos devuelven 17
ya que el argumento cadena comienza por "0x".
parseInt("0x11", 16);
parseInt("0x11", 0);
parseInt("0x11");
SintaxisSección
Math.round(x)
ParámetrosSección
Un número.
DescripciónSección
Si la porción fraccionaría del número es 0.5 o mayor, el argumento es redondeado al
siguiente número entero superior. Si la porción de la fracción del número es menor a 0.5, el
argumento es redondeado al siguiente número entero inferior.
EjemplosSección
Usando Math.round()Sección
// Retorna el valor 20
x = Math.round(20.49);
// Retorna el valor 21
x = Math.round(20.5);
// Retorna el valor -20
x = Math.round(-20.5);
6.
a. Javascript: convertir cadena a mayúsculas o a minúsculas
Para convertir una cadena a mayúsculas:
str.length
DescripciónSección
Esta propiedad devuelve el número de caracteres de una cadena. UTF-16, el formato usado
por JavaScript, usa 16-bit para representar los caracteres más comunes, pero necesita usar
dos caracteres para otros menos usados, así que es posible que el valor devuelto
por length no corresponda al número de caracteres de la cadena.
ECMASCript 2016 (ed. 7) estableció una longitud máxima de 2^53 - 1elementos.
Anteriormente, ninguna longitud máxima era especificada.
Para una cadena vacía, length es 0.
La propiedad static String.length devuelve 1.
EjemplosSección
Uso BásicoSección
var x = 'Mozilla';
var empty = '';
c. Método Concat.
Con este método del objeto String de javascript podemos también unir dos o mas strings o
cadenas.
El método no cambia el valor de la cadena que lo invoca, sino que devuelve un nuevo string
con el texto concatenado, así que tener esto en cuenta para no darse de cabezazos.
D. Example
var x1 = Boolean(0);
var x2 = Boolean(1);
var x3 = new Date();
var x4 = "12345";
var x5 = 12345;
var res =
String(x1) + "<br>" +
String(x2) + "<br>" +
String(x3) + "<br>" +
String(x4) + "<br>" +
String(x5);
E. ResumenSección
El método indexOf()devuelve el índice, dentro del objeto String que realiza la llamada, de
la primera ocurrencia del valor especificado, comenzando la búsqueda desde indiceDesde;
o -1 si no se encuentra dicho valor.
SintaxisSección
cadena.indexOf(valorBusqueda[, indiceDesde])
ParámetrosSección
valorBusqueda
Una cadena que representa el valor de búsqueda.
indiceDesde
La localización dentro de la cadena llamada desde la que empezará la búsqueda.
Puede ser un entero entre 0 y la longitud de la cadena. El valor predeterminado es
0.
DescripciónSección
Los caracteres de una cadena se indexan de izquierda a derecha. El índice del primer
carácter es 0, y el índice del último carácter de una cadena
llamada nombreCadena es nombreCadena.length - 1.
"Ballena Azul".indexOf("azul")
EjemplosSección
Ejemplo: Usando indexOf y lastIndexOfSección
El siguiente ejemplo utiliza indexOf y lastIndexOf para localizar valores dentro de la cadena
"Brave new world".
Ejemplo: Usando indexOf para contar ocurrencias de una letra en una cadenaSección
El siguiente ejemplo establece cuenta como el número de ocurrencias de la letra x dentro
de la cadena miCadena:
cuenta = 0;
posicion = miCadena.indexOf("x");
while ( posicion != -1 ) {
cuenta++;
posicion = miCadena.indexOf("x",posicion+1);
}
console.log(
cadena.indexOf("mundo") > -1
);
console.log(
cadena.indexOf("no esta") > -1
);
G. ResumenSección
El método replace() halla un emparejamiento entre una expresión regular y una cadena, y
reemplaza la subcadena emparejada con una nueva subcadena.
SintaxisSección
ParámetrosSección
expresionregular
Un objeto RegExp. El emparejamiento es reemplazado por el valor de devuelto por
el segundo parámetro.
subcadena
Un objeto String que será reemplazado por nuevaSubcadena.
nuevaSubcadena
El objeto String que reemplaza la subcadena que recibida desde el primer parámetro.
funcion
Una función que será invocada para crear la nueva subcadena (para ponerla en lugar
de la subcadena recibida por el primer parámetro).
flags
Un objeto String que contiene cualquier combinación de flags de la clase RegExp: g -
emparejamiento global, i - ignorar mayúsculas, m - emparejar multiples líneas. Este
parámetro se usa sólo si el primer parámetro es una cadena.
DescripciónSección
Este método no cambia el objeto String sobre el que se realiza la llamada. Simplemente
devuelve una nueva cadena.
Para realizar una búsqueda global y reemplazarla, o se incluye el flag g en la expresión
regular o si el primer parámetro es una cadena, se incluye g en el parámetro flags.
Patrón Inserta
The nested function can use the matched substrings to determine the new string
(newSubStr) that replaces the found substring. You get the matched substrings through the
parameters of your function. The first parameter of your function holds the complete
matched substring. If the first argument was a RegExp object, then the
followingn parameters can be used for parenthetical matches, remembered submatch
strings, wheren is the number of submatch strings in the regular expression. Finally, the last
two parameters are the offset within the string where the match occurred and the string
itself. For example, the following replacemethod returns XXzzzz - XX , zzzz.
EjemplosSección
Ejemplo: Usando global e ignore con replaceSección
En el siguiente ejemplo, la expresión regular incluye las banderas "global" e "ignore case",
las cuales permiten al método replace reemplazar cada aparición de la cadena 'apples' por
la cadena 'oranges'.
var re = /apples/gi;
var str = "Apples are round, and apples are juicy.";
var newstr = str.replace(re, "oranges");
print(newstr);
In this version, a string is used as the first parameter and the global and ignore case flags are
specified in the flags parameter.
Both of these examples print "oranges are round, and oranges are juicy."
The replacement function accepts the matched snippet as its parameter, and uses it to
transform the case and concatenate the hyphen before returning.
function styleHyphenFormat(propertyName)
{
function upperToHyphenLower(match)
{
return '-' + match.toLowerCase();
}
return propertyName.replace(/[A-Z]/, upperToHyphenLower);
}
This is because '$&'.toLowerCase() would be evaluated first as a string literal (resulting in the
same '$&') before using the characters as a pattern.
Ejemplo: Reemplazando grados Fahrenheit con su equivalente CelsiusSección
El siguiente ejemplo reemplaza los grados Fahrenheit con su enquivalente en grados Celsius.
Los grados Fahrenheit deberían ser un número acabado en F. La función devuelve el número
Celsius acabado en C. Por ejemplo, si el número de entrada es 212F, la función devuelve
100C. Si el número es 0F, la función devuelve -17.77777777777778C.
function f2c(x)
{
function convert(str, p1, offset, s)
{
return ((p1-32) * 5/9) + "C";
}
var s = String(x);
var test = /(\d+(?:\.\d*)?)F\b/g;
return s.replace(test, convert);
}
H. ResumenSección
El método substr() devuelve los caracteres de una cadena que comienzan en
una localización especificada y de acuerdo al número de caracteres que se especifiquen.
SintaxisSección
cadena.substr(inicio[, longitud])
ParámetrosSección
inicio
Localización en la cual se empiezan a extraer caracteres. Si se da un número
negativo, se trata como longCad + inicio donde longCad es la longitud de la
cadena (por ejemplo, si inicio es -3 se trata como longCad - 3).
longitud
Opcional. El número de caracteres a extraer. Si este argumento es undefined, todos
los caracteres desde inicio hasta el final de la cadena serán extraidos.
Valor retornadoSección
Una nueva cadena que contiende la sección extraída de la cadena dada. Sí la longitud es 0
o un número negativo, retorna la cadena vacía.
DescripciónSección
inicio es el índice de un carácter. El índice del primer carácter es 0, y el índice del último
carácter es la longitud de la cadena menos 1. substr comienza extrayendo caracteres a
partir de inicio y recolecta longitud caracteres (a menos que se alcance primero el final de
la cadena, en cuyo caso devuelve menos).
Si inicio es positivo y es mayor o igual que la longitud de la cadena, substr() devuelve una
cadena vacía.
Si inicio es negativo, substr() lo usa como un índice de carácter desde el final de la cadena.
Si inicio es negativo y abs(inicio) es mayor que la longitud de la cadena, substr usa 0 como
índice inical. Nota: el uso descrito de valores negativos del argumento inicio no es
soportado por Microsoft JScript .
Si longitud es 0 o negativa, substr devuelve una cadena vacía. Si se
omite longitud, inicio extrae caracteres hasta el final de la cadena.
EjemplosSección
Ejemplo: Uso de substr()Sección
(1,2): bc
(-3,2): hi
(-3): hij
(1): bcdefghij
(-20, 2): ab
(20, 2):
Vea También
7. Query es uno de los complementos más esenciales para el desarrollo web, usado en
millones de sitios en toda la web, ya que nos facilita mucho el desarrollo de aplicaciones
enriquecidas del lado del cliente, en Javascript, compatibles con todos los navegadores.
Para los que se inician, conviene aclarar que jQuery no es un lenguaje, sino una serie de
funciones y métodos de Javascript. Por tanto, Javascript es el lenguaje y jQuery es una
librería que podemos usar opcionalmente si queremos facilitar nuestra vida cuando
programamos en Javascript. A veces nos podemos referir a jQuery como framework o
incluso como un API de funciones, útiles en la mayoría de proyectos web.
Antes de llegar jQuery los desarrolladores estábamos obligados a discriminar entre los
diversos navegadores, para ejecutar aquel código Javascript que funcionaba en cada
browser. Con la llegada de jQuery la principal ventaja es que ya no necesitamos
preocuparnos sobre si el navegador del usuario es Explorer, Chrome, Firefox, etc. sino que
la propia librería hará el trabajo "sucio" por nosotros y ejecutará el código que sea
compatible con el software del cliente que está accediendo a nuestra web. Para ello
usaremos las funciones que jQuery nos proporciona, dentro de un grandísimo abanico de
funcionalidades que además se extiende por medio de miles de plugins que ofrece la
comunidad para implementar cualquier tipo de comportamiento.
8. AJAX (Asynchronous Javascript and XML) es una técnica de desarrollo web que, al
combinar una serie de tecnologías independientes, nos permite intercambiar información
entre el servidor y el cliente (un navegador web) de forma asíncrona. Como resultado,
obtenemos una navegación ágil, rápida y dinámica; y también la posibilidad de realizar
cambios sobre una web sin necesidad de actualizarla. Las tecnologías independientes que
lo hacen posible son: