You are on page 1of 174

JavaScript objetos

AnteriorSiguiente

En JavaScript, los objetos son rey. Si usted entiende los objetos, que
entiende JavaScript.

En JavaScript, casi "todo" es un objeto.

Los booleanos pueden ser objetos (si est definida con


la nueva palabra clave)
Los nmeros pueden ser objetos (si est definida con
la nueva palabra clave)
Las cadenas pueden ser objetos (si est definida con
la nueva palabra clave)
Las fechas son siempre objetos
Matemticas son siempre objetos
Las expresiones regulares son siempre objetos
Las matrices son siempre objetos
Las funciones son siempre objetos
Los objetos son siempre objetos

Todos los valores de JavaScript, excepto primitivas, son objetos.

Las primitivas de JavaScript


Un valor primitivo es un valor que no tiene propiedades o mtodos.

Un tipo de datos primitivo es de datos que tiene un valor primitivo.

JavaScript define 5 tipos de tipos de datos primitivos:

cuerda
nmero
booleano
nulo
indefinido

Los valores primitivos son inmutables (que estn codificados y por lo


tanto no se pueden cambiar).
si x = 3.14, puede cambiar el valor de x. Pero no se puede cambiar el
valor de 3,14.

Valor Tipo Comentario

"Hola" cuerda "Hola" es siempre "Hola"

3.14 nmero 3.14 3.14 es siempre

cierto booleano verdad siempre es cierto

falso booleano falsa siempre es falso

nulo null (objeto) nula es siempre nula

indefinido indefinido indefinido siempre es indefinido

Los objetos son variables que contiene


variables
las variables de JavaScript pueden contener valores individuales:

Ejemplo
var person = "John Doe";
Intntalo t mismo "

Los objetos son variables tambin. Sin embargo, los objetos pueden
contener muchos valores.

Los valores se escriben como nombre: valor pares (nombre y valor


separados por dos puntos).
Ejemplo
var person = {firstName:"John", lastName:"Doe", age:50,
eyeColor:"blue"};
Intntalo t mismo "

Un objeto de JavaScript es un conjunto de valores con nombre

Propiedades del objeto


Los valores mencionados, en los objetos de JavaScript, se
denominan propiedades .

Propiedad Valor

nombre de pila John

apellido Gama

aos 50

color de los ojos azul

Objetos escritos en forma de pares de nombre y valor son similares a:

arrays asociativos en PHP


Diccionarios en Python
Las tablas hash en C
Los mapas de hash en Java
Hashes en Ruby y Perl

Mtodos de objetos
Los mtodos son acciones que se pueden realizar sobre los objetos.
Las propiedades de objeto pueden ser tanto valores primitivos, otros
objetos, y funciones.

Un mtodo de objeto es una propiedad de objeto que contiene


una definicin de funcin .

Propiedad Valor

nombre de pila John

apellido Gama

aos 50

color de los ojos azul

nombre completo la funcin () {return this.firstName + "" +


this.lastName;}

objetos JavaScript son contenedores de valores con nombre, llamadas


propiedades y mtodos.

Usted aprender ms sobre los mtodos en los prximos captulos.

Creacin de un objeto JavaScript


Con JavaScript, puede definir y crear sus propios objetos.

Hay diferentes maneras de crear nuevos objetos:

Definir y crear un nico objeto, utilizando un objeto literal.


Definir y crear un nico objeto, con la palabra clave nueva.
Definir un constructor de objetos, y luego crear objetos del tipo
construido.

En ECMAScript 5, un objeto tambin se puede crear con la funcin


Object.create ().
El uso de un objeto literal
Esta es la forma ms fcil de crear un objeto de JavaScript.

El uso de un objeto literal, tanto definir y crear un objeto en un


comunicado.

Un literal objeto es una lista del nombre: pares de valores (como edad:
50) dentro de llaves {}.

El siguiente ejemplo crea un nuevo objeto JavaScript con cuatro


propiedades:

Ejemplo
var person = {firstName:"John", lastName:"Doe", age:50,
eyeColor:"blue"};
Intntalo t mismo "

Los espacios y saltos de lnea no son importantes. Una definicin de


objeto puede abarcar varias lneas:

Ejemplo
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
};
Intntalo t mismo "

Usando el nuevo JavaScript Palabra clave


El siguiente ejemplo tambin crea un nuevo objeto JavaScript con cuatro
propiedades:

Ejemplo
var person = new Object();
person.firstName = "John";
person.lastName = "Doe";
person.age = 50;
person.eyeColor = "blue";
Intntalo t mismo "

Los dos ejemplos anteriores hacen exactamente lo mismo. No hay


necesidad de usar new Object ().
Por simplicidad, la legibilidad y la velocidad de ejecucin, utilice el
primero (el mtodo literal objeto).

El uso de un constructor de objetos


Los ejemplos anteriores son limitados en muchas situaciones. Ellos slo
crean un nico objeto.

A veces nos gustara tener un "tipo de objeto" que se puede utilizar para
crear muchos objetos de un tipo.

La forma habitual de crear un "tipo de objeto" es utilizar una funcin de


constructor de objeto:

Ejemplo
function person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
var myFather = new person("John", "Doe", 50, "blue");
var myMother = new person("Sally", "Rally", 48, "green");
Intntalo t mismo "

La funcin anterior (persona) es un constructor de objetos.

Una vez que tenga un constructor de objetos, puede crear nuevos


objetos del mismo tipo:

var myFather = new person("John", "Doe", 50, "blue");


var myMother = new person("Sally", "Rally", 48, "green");

La presente palabra clave


En JavaScript, lo que llamamos esto , es el objeto que "posee" el cdigo
JavaScript.

El valor de este , cuando se utiliza en una funcin, es el objeto que


"posee" la funcin.

El valor de este , cuando se utiliza en un objeto, es el objeto mismo.

La presente palabra clave en un constructor de objetos no tiene un


valor. Slo es un sustituto para el nuevo objeto.

El valor de este se convertir en el nuevo objeto cuando se utiliza el


constructor para crear un objeto.

Tenga en cuenta que esta no es una variable. Es una palabra clave. No


se puede cambiar el valor de esta .

Una funcin de JavaScript Constructores


JavaScript tiene constructores incorporadas para objetos nativos:

Ejemplo
var x1 = new Object(); // A new Object object
var x2 = new String(); // A new String object
var x3 = new Number(); // A new Number object
var x4 = new Boolean(); // A new Boolean object
var x5 = new Array(); // A new Array object
var x6 = new RegExp(); // A new RegExp object
var x7 = new Function(); // A new Function object
var x8 = new Date(); // A new Date object
Intntalo t mismo "

El objeto Math () no est en la lista. La matemtica es un objeto


global. La nueva palabra clave no se puede utilizar en matemticas.

Sabas?
Como se puede ver, JavaScript tiene versiones de los tipos de datos
primitivos de cuerda, el nmero y objeto de Boole.

No hay ninguna razn para crear objetos complejos. Los valores


primitivos ejecutan mucho ms rpido.
Y no hay ninguna razn para utilizar new Array (). Utilice literales de
matriz en su lugar: []

Y no hay ninguna razn para utilizar new RegExp (). Utilice literales
patrn en su lugar: / () /

Y no hay razn para usar la nueva funcin (). Utilizar las expresiones de
funcin en su lugar: function () {}.

Y no hay ninguna razn para utilizar new Object (). Utilizar literales en
su lugar: {}

Ejemplo
var x1 = {}; // new object
var x2 = ""; // new primitive string
var x3 = 0; // new primitive number
var x4 = false; // new primitive boolean
var x5 = []; // new array object
var x6 = /()/ // new regexp object
var x7 = function(){}; // new function object
Intntalo t mismo "

Objetos de cuerda
Normalmente, las cadenas se crean como primitivas: primerNombre
var = "John"

Sin embargo, las cadenas tambin se pueden crear como objetos


utilizando la nueva palabra clave: primerNombre var = new String (
"Juan")

Sepa por qu las cadenas no deben crearse como objeto en el


captulo JS Cuerdas .

nmero objetos
Normalmente, los nmeros se crean como primitivas: var x = 123

Pero los nmeros tambin se pueden crear como objetos utilizando


la nueva palabra clave: var x = nuevo nmero (123)
Sepa por qu los nmeros no se deben crear como objeto en los
captulos nmeros JS .

Objetos de Boole
Normalmente, booleanos se crean como primitivas: var x = false

Pero booleanos tambin se pueden crear como objetos utilizando


la nueva palabra clave: var x = new Boolean (false)

Sepa por qu booleanos no se deben crear como objeto en los


captulos JS booleanos .

Objetos de JavaScript son mutables


Los objetos son mutables: Estn dirigidas por referencia, no por valor.

Si la persona es un objeto, la siguiente declaracin no crear una copia


de la persona:

var x = person; // This will not create a copy of person.

El objeto x es no una copia de la persona. Que es persona. Tanto x


persona y son el mismo objeto.

Cualquier cambio en x tambin cambiar persona, porque xy persona


son el mismo objeto.

Ejemplo
var person = {firstName:"John", lastName:"Doe", age:50,
eyeColor:"blue"}

var x = person;
x.age = 10; // This will change both x.age and
person.age
Intntalo t mismo "

Nota: Las variables JavaScript no son mutables. Slo los objetos de


JavaScript.
JavaScript propiedades de los
objetos
AnteriorSiguiente

Las propiedades son la parte ms importante de cualquier objeto de


JavaScript.

Propiedades de JavaScript
Las propiedades son los valores asociados a un objeto JavaScript.

Un objeto JavaScript es una coleccin de propiedades no ordenadas.

Propiedades por lo general se pueden cambiar, aadir y borrar, pero


algunos son de slo lectura.

Acceso a las propiedades de JavaScript


La sintaxis para acceder a la propiedad de un objeto es:

objectName.property // person.age

objectName["property"] // person["age"]

objectName[expression] // x = "age"; person[x]

La expresin debe evaluar a un nombre de propiedad.

Ejemplo 1
person.firstname + " is " + person.age + " years old.";
Intntalo t mismo "
Ejemplo 2
person["firstname"] + " is " + person["age"] + " years old.";
Intntalo t mismo "

JavaScript para ... en bucle


La JavaScript para ... en la declaracin de bucle a travs de las
propiedades de un objeto.

Sintaxis
for (variable in object) {
code to be executed
}

El bloque de cdigo dentro del bucle for ... in ser ejecutada una vez
para cada propiedad.

Bucle a travs de las propiedades de un objeto:

Ejemplo
var person = {fname:"John", lname:"Doe", age:25};

for (x in person) {
txt += person[x];
}
Intntalo t mismo "

Aadir nuevas propiedades


Puede aadir nuevas propiedades a un objeto existente simplemente
dando un valor.

Supongamos que la persona objeto ya existe - a continuacin, puede


darle nuevas propiedades:

Ejemplo
person.nationality = "English";
Intntalo t mismo "

No se puede utilizar palabras reservadas para la propiedad (o mtodo)


nombres. Se aplican las reglas de nomenclatura de JavaScript.

Supresin de propiedades
El borrado palabra clave se elimina una propiedad de un objeto:

Ejemplo
var person = {firstName:"John", lastName:"Doe", age:50,
eyeColor:"blue"};
delete person.age; // or delete person["age"];

Intntalo t mismo "

La palabra clave de borrado elimina tanto el valor de la propiedad y la


propiedad en s.

Tras la eliminacin, la propiedad no puede ser utilizado antes de que se


vuelve a aadir de nuevo.

El operador de eliminacin est diseado para ser utilizado en las


propiedades del objeto. No tiene ningn efecto sobre las variables o
funciones.

El operador de eliminacin no debe utilizarse en predefinidas las


propiedades del objeto de JavaScript. Se puede bloquear su aplicacin.

Atributos de propiedad
Todas las propiedades tienen un nombre. Adems tambin tienen un
valor.

El valor es uno de los atributos de la propiedad.

Otros atributos son: enumerables, configurable y modificable.

Estos atributos definen cmo se puede acceder a la propiedad (es legible


?, es modificable?)
En JavaScript, todos los atributos se pueden leer, pero slo el atributo
de valor se pueden cambiar (y slo si la propiedad se puede escribir).

(ECMAScript 5 tiene mtodos tanto para obtener y establecer todos los


atributos de propiedad)

Propiedades del prototipo


objetos JavaScript heredan las propiedades de su prototipo.

La palabra clave de eliminacin no elimina las propiedades heredadas,


pero si elimina una propiedad prototipo, que afectar a todos los objetos
heredados del prototipo.

JavaScript mtodos del objeto


AnteriorSiguiente

Mtodos de JavaScript
mtodos de JavaScript son las acciones que se pueden realizar sobre los
objetos.

Un JavaScript mtodo es una propiedad que contiene una definicin


de funcin .

Propiedad Valor

nombre de pila John

apellido Gama
aos 50

color de los ojos azul

nombre completo la funcin () {return this.firstName + "" + this.lastName;}

Los mtodos son funciones almacenadas como propiedades del objeto.

El acceso a mtodos de objeto


Se crea un mtodo de objeto con la siguiente sintaxis:

methodName : function() { code lines }

Se accede a un mtodo de objeto con la siguiente sintaxis:

objectName.methodName()

Por lo general, va a describir fullName () como un mtodo del objeto


persona y fullName como una propiedad.

La propiedad fullName ejecutar (en funcin) cuando se invoca con ().

En este ejemplo se accede a la fullName () mtodo de un objeto de la


persona:

Ejemplo
name = person.fullName();
Intntalo t mismo "

Si accede a la fullName propiedad , sin (), devolver la definicin de


la funcin :

Ejemplo
name = person.fullName;
Intntalo t mismo "
Usando mtodos incorporados
Este ejemplo utiliza el mtodo toUpperCase () del objeto String, para
convertir un texto en maysculas:

var message = "Hello world!";


var x = message.toUpperCase();

El valor de x, despus de la ejecucin del cdigo anterior ser:

HELLO WORLD!

La adicin de nuevos mtodos


mtodos Agregando un objeto se realiza dentro de la funcin
constructor:

Ejemplo
function person(firstName, lastName, age, eyeColor) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.eyeColor = eyeColor;
this.changeName = function (name) {
this.lastName = name;
};
}

La funcin changename () asigna el valor del nombre de la propiedad


lastName de la persona.

Ahora puede probar:


myMother.changeName("Doe");
Intntalo t mismo "

JavaScript sabe que la persona que est hablando por "sustitucin" de


este con myMother .
JavaScript prototipos de objetos
AnteriorSiguiente

Cada objeto tiene un prototipo de JavaScript. El prototipo es tambin


un objeto.

Todos los objetos JavaScript heredan sus propiedades y mtodos de


su prototipo.

Los prototipos de JavaScript


Todos los objetos JavaScript heredan las propiedades y mtodos de su
prototipo.

Los objetos creados utilizando un objeto literal o con new Object (),
heredan de un prototipo llamado Object.prototype.

Los objetos creados con new Date () heredan el Date.prototype.

El Object.prototype est en la parte superior de la cadena de prototipo.

Todos los objetos JavaScript (Fecha, Array, RegExp, funcin, ....)


heredan de la Object.prototype.

La creacin de un prototipo
La forma estndar para crear un prototipo objeto es utilizar una funcin
de constructor de objeto:

Ejemplo
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Con una funcin constructora, puede utilizar la nueva palabra clave para
crear nuevos objetos del mismo prototipo:

Ejemplo
var myFather = new Person("John", "Doe", 50, "blue");
var myMother = new Person("Sally", "Rally", 48, "green");
Intntalo t mismo "

La funcin del constructor es el prototipo de objetos Persona.


Se considera una buena prctica funcin de nombre de constructor con
una primera letra mayscula.

Adicin de propiedades y mtodos de los


objetos
A veces desea agregar nuevas propiedades (o mtodos) a un objeto
existente.

A veces desea agregar nuevas propiedades (o mtodos) a todos los


objetos existentes de un tipo dado.

A veces desea agregar nuevas propiedades (o mtodos) para un


prototipo de objeto.

Adicin de una propiedad de un objeto


Adicin de una nueva propiedad a un objeto existente es fcil:

Ejemplo
myFather.nationality = "English";
Intntalo t mismo "

La propiedad se aadir a myFather. No myMother. No a cualquier otro


objeto persona.
Adicin de un mtodo a un Objeto
Adicin de un nuevo mtodo para un objeto existente tambin es fcil:

Ejemplo
myFather.name = function () {
return this.firstName + " " + this.lastName;
};
Intntalo t mismo "

El mtodo se aadir a myFather. No myMother.

Adicin de propiedades a un prototipo


No se puede agregar una nueva propiedad a un prototipo de la misma
forma que se agrega una nueva propiedad a un objeto existente, debido
a que el prototipo no es un objeto existente.

Ejemplo
Person.nationality = "English";
Intntalo t mismo "

Para aadir una nueva propiedad a un prototipo, debe agregarlo a la


funcin constructora:

Ejemplo
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
Intntalo t mismo "

propiedades prototipo puede tener valores de prototipo (valores por


defecto).
Adicin de Mtodos a un prototipo
Su funcin constructora tambin puede definir mtodos:

Ejemplo
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.name = function() {return this.firstName + "
" + this.lastName;};
}
Intntalo t mismo "

Utilizando el prototipo de la propiedad


La propiedad prototipo de JavaScript permite aadir nuevas propiedades
a un prototipo existente:

Ejemplo
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
Intntalo t mismo "

La propiedad prototipo de JavaScript tambin permite aadir nuevos


mtodos a un prototipo existente:

Ejemplo
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.name = function() {
return this.firstName + " " + this.lastName;
};
Intntalo t mismo "

Slo modificar sus propios prototipos. Nunca modifique los prototipos


de objetos JavaScript estndar.

JavaScript definiciones de
funciones
AnteriorSiguiente

Funciones de JavaScript se definen con la funcin de la palabra


clave.

Se puede utilizar una funcin de declaracin o una funcin


de expresin .

Las declaraciones de funciones


Al principio de este tutorial, aprendi que las funciones se declaran con
la siguiente sintaxis:

function functionName(parameters) {
code to be executed
}

funciones declaradas no se ejecutan inmediatamente. Ellos son


"salvados para su uso posterior", y se ejecutarn ms adelante, cuando
se invoca (llamados).

Ejemplo
function myFunction(a, b) {
return a * b;
}

Intntalo t mismo "


Los puntos y comas se utilizan para separar sentencias JavaScript
ejecutables.
Desde una funcin de declaracin no es una instruccin ejecutable,
que no es comn para terminar con un punto y coma.

Las expresiones de funcin


Una funcin JavaScript tambin puede definirse usando una expresin .

Una expresin de funcin puede ser almacenado en una variable:

Ejemplo
var x = function (a, b) {return a * b};
Intntalo t mismo "

Despus de una expresin de la funcin se ha almacenado en una


variable, la variable puede ser utilizado como una funcin:

Ejemplo
var x = function (a, b) {return a * b};
var z = x(4, 3);
Intntalo t mismo "

La funcin anterior es en realidad una funcin annima (una funcin


sin nombre).

Las funciones almacenadas en las variables no necesitan nombres de


funcin. Ellos siempre se invocan (llamada), utilizando el nombre de la
variable.

La funcin anterior termina con un punto y coma, ya que es una parte


de una instruccin ejecutable.

La funcin () Constructor
Como se ha visto en los ejemplos anteriores, las funciones de JavaScript
se definen con la funcin de la palabra clave.
Las funciones tambin se pueden definir con un sistema incorporado en
JavaScript funcin constructora llamada de funcin ().

Ejemplo
var myFunction = new Function("a", "b", "return a * b");

var x = myFunction(4, 3);


Intntalo t mismo "

En realidad no tiene que utilizar el constructor funcin. El ejemplo


anterior es lo mismo que escribir:

Ejemplo
var myFunction = function (a, b) {return a * b};

var x = myFunction(4, 3);


Intntalo t mismo "

La mayor parte del tiempo, se puede evitar el uso de la nueva palabra


clave en JavaScript.

Levantamiento de la funcin
Al principio de este tutorial, aprendi acerca de "elevacin".

Izado es el comportamiento por defecto de JavaScript de


mover declaraciones a la parte superior del mbito actual.

De elevacin se aplica a las declaraciones de variables y para la


declaracin de funciones.

Debido a esto, las funciones de JavaScript puede ser llamado antes de


que se declaran:

myFunction(5);

function myFunction(y) {
return y * y;
}

Las funciones definidas utilizando una expresin no se izan.


Funciones de auto-Invocando
Las expresiones de funcin se pueden hacer "auto-invocacin".

Una expresin de auto-invocacin se invoca (iniciado) de forma


automtica, sin ser llamado.

Las expresiones de funcin se ejecutar automticamente si la expresin


es seguido por ().

No se puede auto-invocar una declaracin de la funcin.

Usted tiene que agregar parntesis alrededor de la funcin para indicar


que se trata de una expresin de funcin:

Ejemplo
(function () {
var x = "Hello!!"; // I will invoke myself
})();
Intntalo t mismo "

La funcin anterior es en realidad una funcin de auto-invocando


annima (funcin sin nombre).

Las funciones pueden usarse como valores


funciones de JavaScript se pueden utilizar como valores:

Ejemplo
function myFunction(a, b) {
return a * b;
}

var x = myFunction(4, 3);


Intntalo t mismo "

funciones de JavaScript se pueden utilizar en las expresiones:

Ejemplo
function myFunction(a, b) {
return a * b;
}

var x = myFunction(4, 3) * 2;
Intntalo t mismo "

Las funciones son objetos


El typeof operador en JavaScript devuelve "funcin" de funciones.

Sin embargo, las funciones de JavaScript se pueden describir mejor


como objetos.

Funciones de JavaScript tienen ambas propiedades y mtodos .

La propiedad arguments.length devuelve el nmero de argumentos


recibido cuando se invoca la funcin:

Ejemplo
function myFunction(a, b) {
return arguments.length;
}
Intntalo t mismo "

El mtodo toString () devuelve la funcin como una cadena:

Ejemplo
function myFunction(a, b) {
return a * b;
}

var txt = myFunction.toString();


Intntalo t mismo "

Una funcin definida como la propiedad de un objeto, se llama un


mtodo para el objeto.
Una funcin diseada para crear nuevos objetos, se llama un constructor
de objetos.
JavaScript Parmetros de funciones
AnteriorSiguiente

Una funcin JavaScript no realiza ninguna comprobacin de valores


de los parmetros (argumentos).

Los parmetros de funcin y los


argumentos
Al principio de este tutorial, aprendi que las funciones pueden
tener parmetros :

functionName(parameter1, parameter2, parameter3) {


code to be executed
}

Funcin parmetros son los nombres que figuran en la definicin de


funcin.

Funcin argumentos son los verdaderos valores pasados a (y recibidos


por) la funcin.

Reglas de parmetros
la definicin de funciones de JavaScript no especifican los tipos de datos
de parmetros.

funciones de JavaScript no llevan a cabo la comprobacin de tipos en los


argumentos pasados.

funciones de JavaScript no comprueban el nmero de argumentos


recibidos.
valores predeterminados de los
parmetros
Si una funcin es llamada con argumentos que faltan (menos
declarada), los valores que faltan se establecen en:indefinido

A veces esto es aceptable, pero a veces es mejor asignar un valor por


defecto para el parmetro:

Ejemplo
function myFunction(x, y) {
if (y === undefined) {
y = 0;
}
}
Intntalo t mismo "

Si una funcin es llamada con demasiados argumentos (ms que


declarada), estos argumentos se pueden alcanzar usando objeto
arguments .

El objeto arguments
funciones de JavaScript tienen incorporado un objeto llamado objeto
arguments.

El objeto argumento contiene una matriz de los argumentos utilizados


cuando la funcin se llama (invocada).

De esta manera puede utilizar simplemente una funcin de encontrar


(por ejemplo) el valor ms alto de una lista de nmeros:

Ejemplo
x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
var i;
var max = -Infinity;
for (i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
Intntalo t mismo "

O crear una funcin para resumir todos los valores de entrada:

Ejemplo
x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() {
var i, sum = 0;
for (i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
Intntalo t mismo "

Los argumentos se pasan por valor


Los parmetros, en una llamada de funcin, son argumentos de la
funcin.

JavaScript argumentos son pasados por valor : La funcin slo llega a


conocer los valores, no los lugares del argumento.

Si una funcin cambia el valor de un argumento, no cambia el valor


original del parmetro.

Los cambios en los argumentos no son visibles (reflejado) fuera


de la funcin.

Los objetos se pasan por referencia


En JavaScript, las referencias a objetos son valores.

Debido a esto, los objetos se comportan como si se pasan


por referencia:
Si una funcin cambia una propiedad de objeto, cambia el valor original.

Cambios a objeto propiedades son visibles (reflejada) fuera de la


funcin.

JavaScript invocacin de la funcin


AnteriorSiguiente

El cdigo dentro de una funcin de JavaScript se ejecutar cuando


"algo" lo invoca.

Invocar una funcin JavaScript


El cdigo dentro de una funcin no se ejecuta cuando la funcin
est definida .

El cdigo dentro de una funcin se ejecuta cuando se la


funcin invocada .

Es comn utilizar el trmino " llamar a una funcin " en lugar de


" invocar una funcin ".

Tambin es comn decir "invocar una funcin", "iniciar una funcin", o


"ejecutar una funcin".

En este tutorial, vamos a utilizar de invocacin , porque una funcin de


JavaScript se puede invocar sin ser llamado.

La invocacin de una funcin como


funcin
Ejemplo
function myFunction(a, b) {
return a * b;
}
myFunction(10, 2); // Will return 20
Intntalo t mismo "
La funcin anterior no pertenece a ningn objeto. Pero en JavaScript
siempre hay un objeto global por defecto.

En HTML el objeto global por defecto es la pgina HTML en s, por lo que


la funcin anterior "pertenece" a la pgina HTML.

En un explorador del objeto de pgina es la ventana del navegador. La


funcin anterior se convierte automticamente en funcin de ventana.

myFunction () y window.myFunction () es la misma funcin:

Ejemplo
function myFunction(a, b) {
return a * b;
}
window.myFunction(10, 2); // Will also return 20
Intntalo t mismo "

Esta es una forma comn para invocar una funcin JavaScript, pero no
una muy buena prctica.
Las variables globales, mtodos o funciones pueden crear conflictos de
nombres y errores en el objeto global.

La presente palabra clave


En JavaScript, lo que llamamos esto , es el objeto que "posee" el cdigo
actual.

El valor de este, cuando se utiliza en una funcin, es el objeto que


"posee" la funcin.

Tenga en cuenta que esta no es una variable. Es una palabra clave. No


se puede cambiar el valor de esta .

El objeto global
Cuando una funcin se llama un objeto sin dueo, el valor de este se
convierte en el objeto global.

En un navegador web al objeto global es la ventana del navegador.


Este ejemplo devuelve el objeto de ventana como el valor de esta :

Ejemplo
function myFunction() {
return this;
}
myFunction(); // Will return the window object
Intntalo t mismo "

La invocacin de una funcin como una funcin global, hace que el valor
de este que es el objeto global.
Utilizando el objeto de la ventana como una variable puede bloquear
fcilmente su programa.

Invocar una funcin como mtodo


En JavaScript se puede definir como la funcin de los mtodos de objeto.

El ejemplo siguiente crea un objeto ( myObject ), con dos propiedades


( firstName y lastName ), y un mtodo ( fullName ):

Ejemplo
var myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName(); // Will return "John Doe"
Intntalo t mismo "

El fullName mtodo es una funcin. La funcin pertenece al


objeto. myObject es el propietario de la funcin.

La cosa que se llama esto , es el objeto que "posee" el cdigo


JavaScript. En este caso, el valor de este es myObject .

Prubalo! Cambiar el fullName mtodo para devolver el valor de esta :

Ejemplo
var myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this;
}
}
myObject.fullName(); // Will return [object Object]
(the owner object)
Intntalo t mismo "

La invocacin de una funcin como un mtodo de objeto, hace que el


valor de este para ser el objeto mismo.

La invocacin de una funcin con un


constructor de funciones
Si una invocacin de la funcin es precedida con la nueva palabra clave,
es una invocacin del constructor.

Parece que se crea una nueva funcin, pero ya que las funciones de
JavaScript son objetos en realidad se crea un nuevo objeto:

Ejemplo
// This is a function constructor:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}

// This creates a new object


var x = new myFunction("John", "Doe");
x.firstName; // Will return "John"
Intntalo t mismo "

Una invocacin constructor crea un nuevo objeto. El nuevo objeto


hereda las propiedades y mtodos de su constructor.

La presente palabra clave en el constructor no tiene un valor.


El valor de este ser el nuevo objeto creado cuando se invoca la
funcin.
JavaScript llamada a funcin
AnteriorSiguiente

Las funciones son mtodos de objeto


Todas las funciones de JavaScript son mtodos del objeto.

Si una funcin no es un mtodo de un objeto de JavaScript, que es una


funcin del objeto global (vase el captulo anterior).

El ejemplo siguiente crea un objeto con 3 propiedades


( firstName , lastName , fullName ).

Ejemplo
var person = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
person.fullName(); // Will return "John Doe"
Intntalo t mismo "

La propiedad fullName es un mtodo . El objeto persona es


el dueo del mtodo.

La propiedad fullName es un mtodo del objeto persona .

La llamada de JavaScript () Mtodo


La llamada () mtodo es un mtodo de funcin de JavaScript
predefinida.

Se puede utilizar para invocar (llamada) de una funcin con un objeto


propietario como primer argumento (parmetro).

Con la llamada () , puede utilizar un mtodo que pertenece a otro


objeto.
En este ejemplo se llama a la funcin fullName de la persona, pero lo
est utilizando en myObject:

Ejemplo
var person = {
firstName:"John",
lastName: "Doe",
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var myObject = {
firstName:"Mary",
lastName: "Doe",
}
person.fullName.call(myObject); // Will return "Mary Doe"

Intntalo t mismo "

JavaScript Funcin Aplicar


AnteriorSiguiente

El JavaScript apply () Mtodo


El apply () mtodo es similar al mtodo call ():

Ejemplo
var person = {
firstName:"John",
lastName: "Doe",
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var myObject = {
firstName:"Mary",
lastName: "Doe",
}
person.fullName.apply(myObject); // Will return "Mary Doe"
Intntalo t mismo "

La diferencia entre la llamada () y aplicar ()


La nica diferencia es:

llamada () toma argumentos de funcin por separado.

aplicar () toma cualquier argumentos de la funcin como una matriz.

El mtodo de aplicacin () es muy til si se desea utilizar una matriz en


lugar de una lista de argumentos.

Si desea obtener el mayor nmero en una lista de nmeros que puede


utilizar el mtodo Math.max ():

Ejemplo
Math.max(1,2,3); // Will return 3

Intntalo t mismo "

Dado que las matrices de JavaScript no tienen un mtodo max (), se


puede aplicar el Math.max () en su lugar.

Ejemplo
Math.max.apply(null,[1,2,3]); // Will also return 3

Intntalo t mismo "

El valor de este
En el modo estricto JavaScript, el primer argumento se convierte en el
valor de este en la funcin invocada, incluso si el argumento no es un
objeto.

En el modo "no estricto", si el valor del primer argumento es nulo o no


definido, se reemplaza con el objeto global.
JavaScript Cierres
AnteriorSiguiente

Variables JavaScript pueden pertenecer al local, o mundial alcance.

Las variables globales se pueden hacer local (privada) con cierres .

Variables globales
Una funcin puede tener acceso a todas las variables definidas dentro
de la funcin, como este:

Ejemplo
function myFunction() {
var a = 4;
return a * a;
}
Intntalo t mismo "

Sin embargo, una funcin tambin se puede acceder a las variables


definidas fuera de la funcin, como este:

Ejemplo
var a = 4;
function myFunction() {
return a * a;
}
Intntalo t mismo "

En el ltimo ejemplo, una es un mundial variable.

En una pgina web, variables globales pertenecen al objeto de ventana.

Las variables globales se pueden usar (y cambiar) por todas las


secuencias de comandos en la pgina (y en la ventana).

En el primer ejemplo, una es un local de variable.


Una variable local slo se puede utilizar dentro de la funcin en la que se
define. Se oculta a otras funciones y otros cdigos de secuencias de
comandos.

Las variables globales y locales con el mismo nombre son variables


diferentes. La modificacin de uno, no modifica la otra.

Las variables creadas sin la palabra clave var , siempre son globales,
incluso si se crean dentro de una funcin.

variable de por vida


Las variables globales viven tanto como su aplicacin (la ventana de su /
su pgina web) vive.

Las variables locales tienen una vida corta. Se crean cuando se invoca la
funcin, y se borran cuando se termina la funcin.

Un dilema Contador
Supongamos que se desea utilizar una variable para contar algo, y desea
que este contador est disponible para todas las funciones.

Se podra utilizar una variable global, y una funcin para aumentar el


contador:

Ejemplo
var counter = 0;

function add() {
counter += 1;
}

add();
add();
add();

// the counter is now equal to 3


Intntalo t mismo "
El contador slo debe ser cambiado por la funcin add ().

El problema es, que cualquier script de la pgina se puede cambiar el


contador, sin llamar a aadir ().

Si declaro el contador dentro de la funcin, nadie ser capaz de


cambiarlo sin llamar a aadir ():

Ejemplo
function add() {
var counter = 0;
counter += 1;
}

add();
add();
add();

// the counter should now be 3, but it does not work !


Intntalo t mismo "

No funcion! Cada vez que llamo la funcin add (), el contador se pone
a 1.

Una funcin JavaScript interno puede resolver esto.

Funciones JavaScript anidadas


Todas las funciones tienen acceso al mbito global.

De hecho, en JavaScript, todas las funciones tienen acceso al mbito


"por encima" de ellos.

JavaScript soporta funciones anidadas. Funciones anidadas tienen


acceso al mbito "por encima" de ellos.

En este ejemplo, la funcin interna ms () tiene acceso a


la contador variable en la funcin madre:

Ejemplo
function add() {
var counter = 0;
function plus() {counter += 1;}
plus();
return counter;
}
Intntalo t mismo "

Esto podra haber resuelto el dilema del contador, si pudiramos


alcanzar el signo ms () la funcin desde el exterior.

Tambin tenemos que encontrar una manera de ejecutar contador =


0 slo una vez.

Necesitamos un cierre.

Los cierres de JavaScript


Recuerde que las funciones de auto-invocar? Qu hace esta funcin?

Ejemplo
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();

add();
add();
add();

// the counter is now 3


Intntalo t mismo "

ejemplo Explicacin
La variable complemento se le asigna el valor de retorno de una
funcin de auto-invocando.

La funcin de auto-invocando slo se ejecuta una vez. Se establece el


contador a cero (0), y devuelve una expresin de funcin.

De esta manera se convierte en una funcin de complemento. La parte


"maravilloso" es que se puede acceder al contador en el mbito padre.

Esto se llama un JavaScript cierre. Esto hace que sea posible para que
una funcin tiene " privadas variables".
El contador est protegido por el alcance de la funcin annima, y slo
puede cambiarse mediante la funcin add.

El cierre es una funcin que tenga acceso al mbito primario, incluso


despus de la funcin madre ha cerrado.

JavaScript HTML DOM


AnteriorSiguiente

Con el DOM de HTML, JavaScript puede acceder y cambiar todos los


elementos de un documento HTML.

El DOM HTML (Document Object Model)


Cuando se carga una pgina web, el navegador crea
una D DOCUMENTO O bject M odelo de la pgina.

El HTML DOM modelo est construido como un rbol de objetos :

El rbol DOM de objetos HTML

Con el modelo de objetos, JavaScript recibe toda la energa que necesita


para crear HTML dinmico:
JavaScript puede cambiar todos los elementos HTML en la pgina
JavaScript puede cambiar todos los atributos de HTML en la
pgina
JavaScript puede cambiar todos los estilos CSS en la pgina
JavaScript puede eliminar elementos y atributos HTML existente
JavaScript puede aadir nuevos elementos y atributos HTML
JavaScript puede reaccionar a todos los eventos de HTML
existentes en la pgina
JavaScript puede crear nuevos eventos en la pgina HTML

Lo que vas a aprender


En los prximos captulos de este tutorial usted aprender:

Cmo cambiar el contenido de los elementos HTML


Cmo cambiar el estilo (CSS) de los elementos HTML
Cmo reaccionar a HTML eventos DOM
Cmo aadir y eliminar elementos HTML

Qu es el DOM?
El DOM es un W3C (World Wide Web Consortium) estndar.

El DOM define un estndar para acceso a los mismos:

"El modelo de objetos de documento W3C (DOM) es una interfaz de


plataforma y lenguaje neutro que permite a los programas y scripts
acceder y actualizar el contenido, la estructura y el estilo de un
documento de forma dinmica."

El estndar W3C DOM se separa en 3 partes diferentes:

Ncleo del DOM - modelo estndar para todos los tipos de


documentos
DOM XML - modelo estndar para documentos XML
HTML DOM - modelo estndar para documentos HTML

Cul es el cdigo HTML DOM?


El DOM HTML es un estndar de objetos de modelo y
de programacin de interfaces para HTML. Se define:

Los elementos HTML como objetos


Las propiedades de todos los elementos HTML
Los mtodos para acceder a todos los elementos HTML
los eventos de todos los elementos HTML

En otras palabras: El DOM HTML es un estndar de cmo obtener,


cambiar, aadir o eliminar elementos HTML.

JavaScript - Mtodos DOM HTML


AnteriorSiguiente

Mtodos HTML DOM son las acciones que puede realizar (en
elementos HTML).

Propiedades HTML DOM son los valores (de elementos HTML) que se
puede ajustar o cambiar.

La interfaz de programacin DOM


El HTML puede acceder al DOM con JavaScript (y con otros lenguajes de
programacin).

En el DOM, todos los elementos HTML se definen como objetos .

La interfaz de programacin es las propiedades y mtodos de cada


objeto.

Una propiedad es un valor que se puede obtener o establecer (como


cambiar el contenido de un elemento HTML).

Un mtodo es una accin que puede hacer (como aadir o eliminar un


elemento HTML).
Ejemplo
El siguiente ejemplo se cambia el contenido (el innerHTML) del elemento
<p> con id = "demo":

Ejemplo
<html>
<body>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = "Hello World!";
</script>

</body>
</html>
Intntalo t mismo "

En el ejemplo anterior, getElementById es un mtodo , mientras que


innerHTML es una propiedad .

El Mtodo getElemenById
La forma ms comn para acceder a un elemento HTML es utilizar el id
del elemento.

En el ejemplo anterior el mtodo getElementById utilizado id = "demo"


para encontrar el elemento.

La propiedad innerHTML
La forma ms fcil de obtener el contenido de un elemento es mediante
el uso de la innerHTML propiedad.

La propiedad innerHTML es til para obtener o reemplazar el contenido


de los elementos HTML.

La propiedad innerHTML puede ser utilizado para obtener o cambiar


cualquier elemento HTML, incluyendo <html> y <body>.
JavaScript documento HTML DOM
AnteriorSiguiente

El objeto de documento HTML DOM es el dueo de todos los dems


objetos en su pgina web.

El objeto de documentos HTML DOM


El objeto de documento representa su pgina web.

Si desea acceder a cualquier elemento en una pgina HTML, que siempre


comienza con el acceso al objeto de documento.

A continuacin se presentan algunos ejemplos de cmo se puede utilizar


el objeto de documento para acceder y manipular HTML.

Elementos HTML hallazgo

Method Description

document.getElementById(id) Find an element by element id

document.getElementsByTagName(name) Find elements by tag name

document.getElementsByClassName(name) Find elements by class name

Cambio de elementos HTML


Method Description

element.innerHTML = new html content Change the inner HTML of an e

element.attribute = new value Change the attribute value of a

element.setAttribute(attribute, value) Change the attribute value of a

element.style.property = new style Change the style of an HTML e

Adicin y eliminacin de elementos

Method Description

document.createElement(element) Create an HTML element

document.removeChild(element) Remove an HTML element

document.appendChild(element) Add an HTML element

document.replaceChild(element) Replace an HTML element

document.write(text) Write into the HTML output str


Adicin de Eventos Manipuladores

Method Description

document.getElementById(id).onclick = function(){code} Adding event handler code to

Encontrar los objetos HTML


La primera HTML DOM Nivel 1 (1998), define los objetos 11 HTML,
colecciones de objetos y propiedades. Estos siguen siendo vlidos en
HTML5.

Ms tarde, en HTML DOM Nivel 3, se agregaron ms objetos, colecciones


y propiedades.

Property Description DOM


document.anchors Returns all <a> elements that have 1
a name attribute
document.applets Returns all <applet> 1
elements (Deprecated in HTML5)
document.baseURI Returns the absolute base URI of 3
the document
document.body Returns the <body> element 1
document.cookie Returns the document's cookie 1
document.doctype Returns the document's doctype 3
document.documentElement Returns the <html> element 3
document.documentMode Returns the mode used by the 3
browser
document.documentURI Returns the URI of the document 3
document.domain Returns the domain name of the 1
document server
document.domConfig Obsolete. Returns the DOM 3
configuration
document.embeds Returns all <embed> elements 3
document.forms Returns all <form> elements 1
document.head Returns the <head> element 3
document.images Returns all <img> elements 1
document.implementation Returns the DOM implementation 3
document.inputEncoding Returns the document's encoding 3
(character set)
document.lastModified Returns the date and time the 3
document was updated
document.links Returns all <area> and <a> 1
elements that have a href attribute
document.readyState Returns the (loading) status of the 3
document
document.referrer Returns the URI of the referrer (the 1
linking document)
document.scripts Returns all <script> elements 3
document.strictErrorChecking Returns if error checking is 3
enforced
document.title Returns the <title> element 1
document.URL Returns the complete URL of the 1
document

JavaScript DOM elementos HTML


AnteriorSiguiente

Esta pgina le ensea cmo encontrar y elementos de acceso HTML


en una pgina HTML.

Elementos HTML hallazgo


A menudo, con JavaScript, que desea manipular los elementos HTML.

Para ello, usted tiene que encontrar los elementos primero. Hay un par
de maneras de hacer esto:

Encontrar los elementos HTML de Identificacin


Encontrar elementos HTML por nombre de etiqueta
Encontrar los elementos HTML de nombre de la clase
Encontrar los elementos HTML de selectores CSS
Encontrar los elementos HTML de colecciones de objetos HTML
Encontrar elemento HTML por Id
La forma ms fcil de encontrar un elemento HTML en el DOM, es
mediante el uso del elemento de identificacin.

En este ejemplo se encuentra el elemento con id = "intro":

Ejemplo
var myElement = document.getElementById("intro");
Intntalo t mismo "

Si se encuentra el elemento, el mtodo devolver el elemento como un


objeto (en myElement).

Si no se encuentra el elemento, myElement contendr nula.

Encontrar los elementos HTML de Nombre


de etiqueta
Este ejemplo busca todos los elementos <P>:

Ejemplo
var x = document.getElementsByTagName("p");
Intntalo t mismo "

En este ejemplo se encuentra el elemento con id = "principal", y luego


encuentra todos <p> elementos dentro "principal":

Ejemplo
var x = document.getElementById("main");
var y = x.getElementsByTagName("p");
Intntalo t mismo "
Encontrar los elementos HTML de nombre
de clase
Si usted quiere encontrar todos los elementos HTML con el mismo
nombre de la clase, utilizar getElementsByClassName ().

En este ejemplo se devuelve una lista de todos los elementos con class
= "intro".

Ejemplo
var x = document.getElementsByClassName("intro");
Intntalo t mismo "

Encontrar elementos por nombre de la clase no funciona en Internet


Explorer 8 y versiones anteriores.

Encontrar los elementos HTML de


selectores CSS
Si usted quiere encontrar todos los elementos HTML que coincide con un
selector CSS especificado (id, nombres de clases, tipos, atributos,
valores de atributos, etc.), utilice el mtodo querySelectorAll ().

En este ejemplo se devuelve una lista de todos los elementos <P> con
class = "intro".

Ejemplo
var x = document.querySelectorAll("p.intro");
Intntalo t mismo "

El mtodo querySelectorAll () no funciona en Internet Explorer 8 y


versiones anteriores.

Encontrar los elementos HTML de


colecciones de objetos HTML
En este ejemplo se encuentra el elemento de formulario con id = "frm1",
en la coleccin de formularios, y muestra todos los valores de los
elementos:

Ejemplo
var x = document.forms["frm1"];
var text = "";
var i;
for (i = 0; i < x.length; i++) {
text += x.elements[i].value + "<br>";
}
document.getElementById("demo").innerHTML = text;
Intntalo t mismo "

Los siguientes objetos HTML (y colecciones de objetos) son tambin


accesibles:

document.anchors
document.body
document.documentElement
document.embeds
document.forms
document.head
document.images
document.links
document.scripts
titulo del documento

Ponte a prueba con los ejercicios!

JavaScript HTML DOM - Cambio de


HTML
AnteriorSiguiente

El DOM HTML permite Javascript para cambiar el contenido de los


elementos HTML.
Cambio de la secuencia de salida HTML
JavaScript puede crear contenido HTML dinmico:

Fecha: Sab Jul 2017 21:39:08 GMT 29 de-0500 (. Hora est


Pacfico, Sudamrica)

En JavaScript, document.write () se puede utilizar para escribir


directamente en la corriente de salida HTML:

Ejemplo
<!DOCTYPE html>
<html>
<body>

<script>
document.write(Date());
</script>

</body>
</html>
Intntalo t mismo "

Nunca use document.write (), despus de cargar el documento. Se


sobrescribir el documento.

Cambio de contenido HTML


La forma ms fcil de modificar el contenido de un elemento HTML es
mediante el uso de la innerHTML propiedad.

Para cambiar el contenido de un elemento HTML, utilice la siguiente


sintaxis:

document.getElementById(id).innerHTML = new HTML

Este ejemplo se cambia el contenido de un elemento <p>:

Ejemplo
<html>
<body>
<p id="p1">Hello World!</p>

<script>
document.getElementById("p1").innerHTML = "New text!";
</script>

</body>
</html>
Intntalo t mismo "

Ejemplo explic:

El documento HTML anterior contiene un elemento <p> con id =


"p1"
Utilizamos el DOM HTML para obtener el elemento con id = "p1"
Un JavaScript cambia el contenido (innerHTML) de ese elemento a
"Nuevo texto!"

Este ejemplo se cambia el contenido de un elemento <h1>:

Ejemplo
<!DOCTYPE html>
<html>
<body>

<h1 id="id01">Old Heading</h1>

<script>
var element = document.getElementById("id01");
element.innerHTML = "New Heading";
</script>

</body>
</html>
Intntalo t mismo "

Ejemplo explic:

El documento HTML anterior contiene un elemento <h1> con id =


"ID01"
Utilizamos el DOM HTML para obtener el elemento con id = "ID01"
Un JavaScript cambia el contenido (innerHTML) de ese elemento
de "Nueva heaing"
Cambiar el valor de un atributo
Para cambiar el valor de un atributo HTML, utilice la siguiente sintaxis:

document.getElementById(id).attribute = new value

Este ejemplo se cambia el valor del atributo src de un elemento <img>:

Ejemplo
<!DOCTYPE html>
<html>
<body>

<img id="myImage" src="smiley.gif">

<script>
document.getElementById("myImage").src = "landscape.jpg";
</script>

</body>
</html>
Intntalo t mismo "

Ejemplo explic:

El documento HTML anterior contiene un elemento <img> con id


= "myImage"
Utilizamos el DOM HTML para obtener el elemento con id =
"myImage"
Un JavaScript cambia el atributo src de ese elemento de
"smiley.gif" a "landscape.jpg"

Ponte a prueba con los ejercicios!

JavaScript DOM HTML - CSS


Cambio
AnteriorSiguiente
El DOM HTML permite Javascript para cambiar el estilo de los
elementos HTML.

Cambiar el estilo de HTML


Para cambiar el estilo de un elemento HTML, utilice la siguiente sintaxis:

document.getElementById(id).style.property = new style

El ejemplo siguiente cambia el estilo de un elemento <p>:

Ejemplo
<html>
<body>

<p id="p2">Hello World!</p>

<script>
document.getElementById("p2").style.color = "blue";
</script>

<p>The paragraph above was changed by a script.</p>

</body>
</html>
Intntalo t mismo "

El uso de Eventos
El DOM HTML le permite ejecutar cdigo cuando se produce un evento.

Los eventos se generan por el navegador cuando "pasan cosas" a los


elementos HTML:

Un elemento que se hace clic en


La pgina se ha cargado
Los campos de entrada se cambian

Va a aprender ms acerca de los eventos en el siguiente captulo de este


tutorial.
En este ejemplo se cambia el estilo del elemento HTML con id = "ID1",
cuando el usuario hace clic en un botn:

Ejemplo
<!DOCTYPE html>
<html>
<body>

<h1 id="id1">My Heading 1</h1>

<button type="button"
onclick="document.getElementById('id1').style.color = 'red'">
Click Me!</button>

</body>
</html>
Intntalo t mismo "

Ms ejemplos
Visibilidad Cmo hacer que un elemento invisible. Quieres mostrar el
elemento o no?

DOM Estilo HTML Object Reference


Para todas las propiedades de estilo HTML DOM, visita nuestra
completa referencia de objetos DOM estilo HTML .

Ponte a prueba con los ejercicios!


Ejercicio 1 Ejercicio 2 Ejercicio 3 Ejercicio 4 Ejercicio 5
JavaScript HTML DOM Animacin
AnteriorSiguiente

Aprender a crear animaciones HTML usando JavaScript.

Una pgina Web Bsico


Para demostrar cmo crear animaciones HTML con JavaScript, vamos a
utilizar una simple pgina web:

Ejemplo
<!DOCTYPE html>
<html>
<body>

<h1>My First JavaScript Animation</h1>

<div id="animation">My animation will go here</div>

</body>
</html>
Intntalo t mismo "

Crear un contenedor de Animacin


Todas las animaciones debe ser relativa a un elemento contenedor.

Ejemplo
<div id ="container">
<div id ="animate">My animation will go here</div>
</div>

El estilo de los elementos


El elemento contenedor debe ser creado con style = "position: relative".

El elemento de animacin debe ser creado con style = "position:


absolute".

Ejemplo
#container {
width: 400px;
height: 400px;
position: relative;
background: yellow;
}
#animate {
width: 50px;
height: 50px;
position: absolute;
background: red;
}
Intntalo t mismo "

Cdigo de animacin
animaciones de JavaScript se llevan a cabo mediante la programacin de
los cambios graduales en el estilo de un elemento.

Los cambios son llamados por un temporizador. Cuando el intervalo del


temporizador es pequea, la animacin se ve continuo.

El cdigo bsico es:

Ejemplo
var id = setInterval(frame, 5);

function frame() {
if (/* test for finished */) {
clearInterval(id);
} else {
/* code to change the element style */
}
}
Crear la animacin usando JavaScript
Ejemplo
function myMove() {
var elem = document.getElementById("animate");
var pos = 0;
var id = setInterval(frame, 5);
function frame() {
if (pos == 350) {
clearInterval(id);
} else {
pos++;
elem.style.top = pos + 'px';
elem.style.left = pos + 'px';
}
}
}
Intntalo t mismo "

JavaScript HTML eventos DOM


AnteriorSiguiente

HTML DOM permite Javascript para reaccionar a eventos HTML:

Del ratn sobre m


Haz click en mi

Reaccin a los eventos


Un JavaScript puede ejecutarse cuando se produce un evento, como
cuando un usuario hace clic en un elemento HTML.

Para ejecutar cdigo cuando un usuario hace clic en un elemento, aadir


cdigo JavaScript a un atributo de evento HTML:

onclick=JavaScript
Ejemplos de eventos HTML:

Cuando un usuario hace clic en el ratn


Cuando una pgina web se ha cargado
Cuando una imagen se ha cargado
Cuando el ratn se mueve sobre un elemento
Cuando se cambia un campo de entrada
Cuando se enva un formulario HTML
Cuando un usuario acaricia una clave

En este ejemplo, el contenido del elemento <h1> se cambia cuando un


usuario hace clic en l:

Ejemplo
<!DOCTYPE html>
<html>
<body>

<h1 onclick="this.innerHTML = 'Ooops!'">Click on this text!</h1>

</body>
</html>
Intntalo t mismo "

En este ejemplo, una funcin es llamada desde el controlador de


eventos:

Ejemplo
<!DOCTYPE html>
<html>
<body>

<h1 onclick="changeText(this)">Click on this text!</h1>

<script>
function changeText(id) {
id.innerHTML = "Ooops!";
}
</script>

</body>
</html>
Intntalo t mismo "
Atributos HTML Evento
Para asignar eventos a elementos HTML que puede utilizar atributos de
los eventos.

Ejemplo
Asignar un evento onclick de un elemento de botn:

<button onclick="displayDate()">Try it</button>


Intntalo t mismo "

En el ejemplo anterior, una funcin llamada displayDate se ejecutar


cuando se hace clic en el botn.

Asignar eventos usando el DOM HTML


El DOM HTML le permite asignar eventos a elementos HTML utilizando
JavaScript:

Ejemplo
Asignar un evento onclick de un elemento de botn:

<script>
document.getElementById("myBtn").onclick = displayDate;
</script>
Intntalo t mismo "

En el ejemplo anterior, una funcin llamada displayDate se asigna a un


elemento HTML con el id = "myBtn".

La funcin se ejecuta cuando se hace clic en el botn.

Los onload y OnUnload Eventos


Los eventos onload y OnUnload se activan cuando el usuario entra o sale
de la pgina.
El proceso de carga se puede utilizar para comprobar el tipo de
navegador y versin del navegador del visitante, y cargar la versin
correcta de la pgina web en base a la informacin.

Los eventos onload y OnUnload se pueden utilizar para hacer frente a las
cookies.

Ejemplo
<body onload="checkCookies()">
Intntalo t mismo "

El evento onchange
El evento onchange se utiliza a menudo en combinacin con la validacin
de campos de entrada.

A continuacin se muestra un ejemplo de cmo utilizar el onchange. La


funcin de maysculas () ser llamada cuando un usuario cambia el
contenido de un campo de entrada.

Ejemplo
<input type="text" id="fname" onchange="upperCase()">
Intntalo t mismo "

Los onmouseover y onMouseOut Eventos


El onmouseover y onmouseout eventos se puede utilizar para activar
una funcin cuando el usuario pasa el ratn por encima, o fuera de, un
elemento HTML:

Del ratn sobre m

Intntalo t mismo "

El onMouseDown, onmouseup y eventos


onclick
El onMouseDown, onmouseup y eventos onclick son todos partes de un
clic del ratn. En primer lugar, cuando se hace clic en un botn del
ratn, el evento onMouseDown se activa, entonces, cuando se suelta el
botn del ratn, el evento se desencadena onmouseup, por ltimo,
cuando se completa la pulsacin del ratn, el evento onclick se dispara.

Click Me

Intntalo t mismo "

Ms ejemplos
onMouseDown y onmouseup
cambiar una imagen cuando un usuario presiona el botn del ratn.

onload
Mostrar un cuadro de alerta cuando la pgina ha terminado de cargar.

onfocus
Cambiar el color de fondo de un campo de entrada cuando se pone el
foco.

Eventos del ratn


Cambiar el color de un elemento cuando el cursor se mueve sobre ella.

HTML DOM evento de referencia de


objetos
Para obtener una lista de todos los eventos DOM HTML, visita nuestra
completa HTML DOM evento de referencia del objeto .

Ponte a prueba con los ejercicios!


JavaScript DOM de HTML
EventListener
AnteriorSiguiente

El mtodo addEventListener ()
Ejemplo
Aadir un detector de eventos que se activa cuando un usuario hace clic
en un botn:

document.getElementById("myBtn").addEventListener("click",
displayDate);
Intntalo t mismo "

El mtodo addEventListener () se une un controlador de eventos con el


elemento especificado.

El mtodo addEventListener () se une un controlador de eventos a un


elemento sin sobrescribir controladores de eventos existentes.

Usted puede agregar muchos controladores de eventos a un elemento.

Usted puede agregar muchos controladores de eventos del mismo tipo a


un elemento, es decir, dos eventos "clic".

Se pueden aadir detectores de eventos a cualquier objeto DOM no slo


los elementos HTML. es decir, el objeto de la ventana.

El mtodo addEventListener () hace que sea ms fcil controlar cmo


reacciona el caso de burbujeo.

Al utilizar el mtodo addEventListener (), el cdigo JavaScript se separa


del marcado HTML, para facilitar su lectura y le permite aadir
detectores de eventos, incluso cuando usted no controla el formato
HTML.

Usted puede quitar fcilmente un detector de eventos utilizando el


mtodo removeEventListener ().
Sintaxis
element.addEventListener(event, function, useCapture);

El primer parmetro es el tipo de evento (como "clic" o "mousedown").

El segundo parmetro es la funcin que queremos llamar cuando se


produce el evento.

El tercer parmetro es un valor booleano que especifica si se debe


utilizar burbujeo evento o captura de evento. Este parmetro es
opcional.

Tenga en cuenta que no se utiliza el prefijo "on" para el evento; usar


"clic" en lugar de "onclick".

Aadir un controlador de eventos a un


Elemento
Ejemplo
Alerta "Hello World!" cuando el usuario hace clic sobre un elemento:

element.addEventListener("click", function(){ alert("Hello


World!"); });
Intntalo t mismo "

Tambin puede hacer referencia a una funcin externa "llamada":

Ejemplo
Alerta "Hello World!" cuando el usuario hace clic sobre un elemento:

element.addEventListener("click", myFunction);

function myFunction() {
alert ("Hello World!");
}
Intntalo t mismo "
Aadir Muchos controladores de eventos
al mismo elemento
El mtodo addEventListener () permite agregar muchos eventos al
mismo elemento, sin sobrescribir los eventos existentes:

Ejemplo
element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);

Intntalo t mismo "

Se pueden aadir eventos de diferentes tipos al mismo elemento:

Ejemplo
element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);
Intntalo t mismo "

Aadir un controlador de eventos al


objeto de ventana
El mtodo addEventListener () le permite aadir detectores de eventos
en cualquier objeto DOM HTML como elementos HTML, el documento
HTML, el objeto de la ventana, u otros objetos que apoyan
acontecimientos, al igual que el objeto XMLHttpRequest.

Ejemplo
Aadir un detector de eventos que se activa cuando un usuario cambia
el tamao de la ventana:

window.addEventListener("resize", function(){
document.getElementById("demo").innerHTML = sometext;
});
Intntalo t mismo "
Paso de parmetros
Al pasar valores de parmetros, utilizar una "funcin annima" que llama
a la funcin especificada con los parmetros:

Ejemplo
element.addEventListener("click", function(){ myFunction(p1,
p2); });
Intntalo t mismo "

El burbujear evento o Captura de eventos?


Hay dos formas de propagacin de eventos en el DOM de HTML,
burbujeantes y captura.

propagacin de eventos es una manera de definir el orden de los


elementos cuando se produce un evento. Si usted tiene un elemento
<p> dentro de un elemento <div>, y el usuario hace clic en el elemento
<p>, que de elemento de "clic" evento debe ser manejado en primer
lugar?

En burbujeante caso de que la mayor parte del elemento interior se


maneja primero y luego el exterior: el <p> Haga clic en el evento del
elemento se maneja en primer lugar, a continuacin, haga clic en el
evento <div> del elemento.

en la captura evento de los ms de elemento externo es manejada


primero y luego el interior: el evento click <div> del elemento ser
tratada primero, luego el <p> Haga clic en el evento del elemento.

Con el mtodo addEventListener () puede especificar el tipo de


propagacin mediante el parmetro "useCapture":

addEventListener(event, function, useCapture);

El valor predeterminado es falso, que utilizar la propagacin burbujeo,


cuando el valor se establece en true, el evento utiliza la propagacin de
captura.

Ejemplo
document.getElementById("myP").addEventListener("click",
myFunction, true);
document.getElementById("myDiv").addEventListener("click",
myFunction, true);
Intntalo t mismo "

El mtodo removeEventListener ()
El mtodo removeEventListener () elimina los controladores de eventos
que se han adjuntado con el mtodo addEventListener ():

Ejemplo
element.removeEventListener("mousemove", myFunction);
Intntalo t mismo "

Soporte del navegador


Los nmeros de la tabla especifica la primera versin del navegador que
es totalmente compatible con estos mtodos.

Method

addEventListener() 1.0 9.0 1.0 1.

removeEventListener() 1.0 9.0 1.0 1.

Nota: El addEventListener () y removeEventListener () mtodos no son


compatibles con IE 8 y versiones anteriores y Opera 6.0 y versiones
anteriores. Sin embargo, para estas versiones especficas del navegador,
puede utilizar el mtodo attachEvent () para adjuntar un controladores
de eventos al elemento, y el mtodo detachEvent () para eliminarlo:

element.attachEvent(event, function);
element.detachEvent(event, function);

Ejemplo
solucin multi-navegador:

var x = document.getElementById("myBtn");
if (x.addEventListener) { // For all major
browsers, except IE 8 and earlier
x.addEventListener("click", myFunction);
} else if (x.attachEvent) { // For IE 8 and
earlier versions
x.attachEvent("onclick", myFunction);
}
Intntalo t mismo "

HTML DOM evento de referencia de


objetos
Para obtener una lista de todos los eventos DOM HTML, visita nuestra
completa HTML DOM evento de referencia del objeto .

JavaScript navegacin HTML DOM


AnteriorSiguiente

Con el DOM de HTML, se puede navegar por el rbol de nodos


utilizando relaciones de nodo.

Los nodos DOM


De acuerdo con el estndar W3C HTML DOM, todo en un documento
HTML es un nodo:

El documento entero es un nodo de documento


Cada elemento HTML es un nodo elemento
El texto dentro de los elementos HTML son nodos de texto
Cada atributo HTML es un nodo de atributo (en desuso)
Todos los comentarios son nodos de comentario
Con el DOM HTML, todos los nodos en el rbol de nodos se puede
acceder mediante JavaScript.

Nuevos nodos pueden ser creados, y todos los nodos pueden ser
modificados o eliminados.

relaciones nodo
Los nodos en el rbol de nodos tienen una relacin jerrquica entre s.

El trminos padre, hijo, hermano y se usan para describir las relaciones.

En un rbol de nodos, el nodo superior se llama la raz (o nodo


raz)
Cada nodo tiene exactamente un padre, excepto la raz (que no
tiene padre)
Un nodo puede tener un nmero de nios
Hermanos (hermanos o hermanas) son nodos con el mismo padre

<html>

<head>
<title>DOM Tutorial</title>
</head>

<body>
<h1>DOM Lesson one</h1>
<p>Hello world!</p>
</body>

</html>
Desde el HTML anterior se puede leer:

<Html> es el nodo raz


<Html> no tiene padres
<Html> es la matriz de <head> y <body>
<Head> es el primer hijo de <html>
<Body> es el ltimo hijo de <html>

y:

<Head> tiene un hijo: <title>


<Title> tiene un hijo (un nodo de texto): "DOM Tutorial"
<Body> tiene dos hijos: <h1> y <p>
<H1> tiene un hijo: "Leccin DOM uno"
<P> tiene un hijo: "Hola, mundo!"
<h1> y <p> son hermanos

Navegando entre nodos


Puede utilizar las siguientes propiedades del nodo para navegar entre los
nodos con JavaScript:

parentNode
childNodes [ NodeNumber ]
primer hijo
ltimo nio
nextSibling
previousSibling
Nodos secundarios y valores de nodo
Un error comn en el procesamiento de DOM es esperar un nodo
elemento para contener texto.

Ejemplo:
<title id="demo">DOM Tutorial</title>

El nodo de elemento <title> (en el ejemplo anterior) no no contienen


texto.

Contiene un nodo de texto con el valor "DOM Tutorial".

El valor del nodo de texto se puede acceder por el nodo


de innerHTML propiedad:

var myTitle = document.getElementById("demo").innerHTML;

Acceso a la propiedad innerHTML es el mismo que el acceso a


la nodeValue del primer hijo:

var myTitle =
document.getElementById("demo").firstChild.nodeValue;

Acceso al primer hijo tambin se puede hacer de esta manera:

var myTitle =
document.getElementById("demo").childNodes[0].nodeValue;

Todas las (3) siguientes ejemplos recupera el texto de un elemento y lo


copia en un elemento <p> <h1>:

Ejemplo
<html>
<body>

<h1 id="id01">My First Page</h1>


<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML =
document.getElementById("id01").innerHTML;
</script>

</body>
</html>
Intntalo t mismo "

Ejemplo
<html>
<body>

<h1 id="id01">My First Page</h1>


<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML =
document.getElementById("id01").firstChild.nodeValue;
</script>

</body>
</html>
Intntalo t mismo "

Ejemplo
<html>
<body>

<h1 id="id01">My First Page</h1>


<p id="id02">Hello!</p>

<script>
document.getElementById("id02").innerHTML =
document.getElementById("id01").childNodes[0].nodeValue;
</script>

</body>
</html>
Intntalo t mismo "

InnerHTML
En este tutorial usamos la propiedad innerHTML para recuperar el
contenido de un elemento HTML.

Sin embargo, el aprendizaje de los otros mtodos anteriormente es til


para la comprensin de la estructura de rbol y la navegacin del DOM.
DOM raz nodos
Hay dos propiedades especiales que permiten el acceso al documento
completo:

document.body - El cuerpo del documento


document.documentElement - El documento completo

Ejemplo
<html>
<body>

<p>Hello World!</p>
<div>
<p>The DOM is very useful!</p>
<p>This example demonstrates
the <b>document.body</b> property.</p>
</div>

<script>
alert(document.body.innerHTML);
</script>

</body>
</html>
Intntalo t mismo "

Ejemplo
<html>
<body>

<p>Hello World!</p>
<div>
<p>The DOM is very useful!</p>
<p>This example demonstrates
the <b>document.documentElement</b> property.</p>
</div>

<script>
alert(document.documentElement.innerHTML);
</script>

</body>
</html>
Intntalo t mismo "
La propiedad nombreNodo
La propiedad nombreNodo especifica el nombre de un nodo.

nombreNodo es de slo lectura


nodeName de un nodo de elemento es el mismo que el nombre de
la etiqueta
nodeName de un nodo de atributo es el nombre del atributo
nodeName de un nodo de texto es siempre #text
nodeName del nodo documento est siempre #document

Ejemplo
<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML =
document.getElementById("id01").nodeName;
</script>
Intntalo t mismo "

Nota: nombreNodo siempre contiene el nombre de la etiqueta en


maysculas de un elemento HTML.

La propiedad nodeValue
La propiedad nodeValue especifica el valor de un nodo.

nodeValue para nodos de elemento est definido


nodeValue para los nodos de texto es el propio texto
nodeValue para los nodos de atributo es el valor del atributo

La propiedad nodeType
La propiedad nodeType es de slo lectura. Se devuelve el tipo de un
nodo.

Ejemplo
<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML =
document.getElementById("id01").nodeType;
</script>
Intntalo t mismo "

Las propiedades nodeType ms importantes son:

Node Type Example


ELEMENT_NODE 1 <h1 class="heading">W3Schools</h1>
ATTRIBUTE_NODE 2 class = "heading" (deprecated)
TEXT_NODE 3 W3Schools
COMMENT_NODE 8 <!-- This is a comment -->
DOCUMENT_NODE 9 <html>
DOCUMENT_TYPE_NODE 10 <!Doctype html>

Tipo 2 est en desuso en el DOM de HTML (pero funciona). No est en


desuso en el DOM XML.

JavaScript HTML DOM elementos


(nodos)
AnteriorSiguiente

Adicin y eliminacin de nodos (elementos) HTML

Creacin de nuevos elementos HTML


(nodos)
Para aadir un nuevo elemento a la DOM de HTML, se debe crear el
elemento (nodo de elemento) en primer lugar y, a continuacin, aadir a
un elemento existente.

Ejemplo
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>

<script>
var para = document.createElement("p");
var node = document.createTextNode("This is new.");
para.appendChild(node);

var element = document.getElementById("div1");


element.appendChild(para);
</script>
Intntalo t mismo "

ejemplo Explicacin
Este cdigo crea un nuevo elemento <p>:

var para = document.createElement("p");

Para aadir texto al elemento <p>, debe crear un nodo de texto en


primer lugar. Este cdigo crea un nodo de texto:

var node = document.createTextNode("This is a new paragraph.");

A continuacin, debe agregar el nodo de texto para el elemento <p>:

para.appendChild(node);

Finally you must append the new element to an existing element.

Este cdigo se encuentra un elemento existente:

var element = document.getElementById("div1");

Este cdigo aade el nuevo elemento al elemento existente:

element.appendChild(para);
La creacin de nuevos elementos HTML -
insertBefore ()
El mtodo appendChild () en el ejemplo anterior, aade el nuevo
elemento como el ltimo hijo de los padres.

Si no desea que se puede utilizar el mtodo insertBefore ():

Ejemplo
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>

<script>
var para = document.createElement("p");
var node = document.createTextNode("This is new.");
para.appendChild(node);

var element = document.getElementById("div1");


var child = document.getElementById("p1");
element.insertBefore(para, child);
</script>
Intntalo t mismo "

Removing Existing HTML Elements


Para eliminar un elemento HTML, se debe conocer el padre del
elemento:

Ejemplo
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>

<script>
var parent = document.getElementById("div1");
var child = document.getElementById("p1");
parent.removeChild(child);
</script>
Intntalo t mismo "

El node.remove mtodo () est implementado en la especificacin DOM


4.
Sin embargo, debido a la mala soporte de los navegadores, no debe
usarlo.

ejemplo Explicacin
Este documento HTML contiene un elemento <div> con dos nodos
secundarios (dos <p> elementos):

<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>

Encuentre el elemento con id = "div1":

var parent = document.getElementById("div1");

Encontrar el elemento <p> con id = "p1":

var child = document.getElementById("p1");

Retirar al nio de los padres:

parent.removeChild(child);

Sera agradable ser capaz de eliminar un elemento sin hacer referencia a


los padres.
Pero lo siento. El DOM necesita saber tanto el elemento que desea
eliminar, y su matriz.

Aqu es una solucin comn: Encontrar el nio que desea eliminar, y el


uso de su propiedad parentNode a encontrar al padre:

var child = document.getElementById("p1");


child.parentNode.removeChild(child);

Sustitucin de elementos HTML


Para reemplazar un elemento para el DOM de HTML, utilice el mtodo
replaceChild ():

Ejemplo
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>

<script>
var para = document.createElement("p");
var node = document.createTextNode("This is new.");
para.appendChild(node);

var parent = document.getElementById("div1");


var child = document.getElementById("p1");
parent.replaceChild(para, child);
</script>
Intntalo t mismo "

JavaScript H TML DOM Colecciones


AnteriorSiguiente

El objeto HTMLCollection
El mtodo getElementsByTagName () devuelve
un HTMLCollection objeto.

Un objeto HTMLCollection es una lista de arreglo similar (coleccin) de


elementos HTML.

El cdigo siguiente selecciona todos los elementos <p> en un


documento:

Ejemplo
var x = document.getElementsByTagName("p");

Los elementos de la coleccin pueden ser accedidos por un nmero de


ndice.
Para acceder al segundo elemento <p> puede escribir:

y = x[1];
Intntalo t mismo "

Nota: El ndice comienza en 0.

HTML HTMLCollection Longitud


La propiedad longitud define el nmero de elementos en una
HTMLCollection:

Ejemplo
var myCollection = document.getElementsByTagName("p");
document.getElementById("demo").innerHTML = myCollection.length;
Intntalo t mismo "

Ejemplo explic:

1. Crear una coleccin de todos los elementos <P>


2. Mostrar la longitud de la coleccin

La propiedad length es til cuando se desea colocar a travs de los


elementos de una coleccin:

Ejemplo
Cambiar el color de fondo de todos los elementos <P>:

var myCollection = document.getElementsByTagName("p");


var i;
for (i = 0; i < myCollection.length; i++) {
myCollection[i].style.backgroundColor = "red";
}
Intntalo t mismo "

Un HTMLCollection no es una matriz!

Un HTMLCollection puede ver como una matriz, pero no lo es.

Puede bucle a travs de la lista y se refieren a los elementos con un


nmero (tal como una matriz).
Sin embargo, no se puede utilizar como mtodos de arreglos valueOf (),
pop (), push (), o unirse a () en una HTMLCollection.

JavaScript listas HTML DOM nodo


AnteriorSiguiente

El objeto HTML DOM NodeList


A NodeList objeto es una lista (coleccin) de nodos extrados de un
documento.

Un objeto NodeList es casi la misma como un objeto HTMLCollection.

Algunos navegadores (mayores) devuelven un objeto NodeList en lugar


de un HTMLCollection de mtodos como getElementsByClassName
() .

Todos los navegadores devuelven un objeto NodeList para la


propiedad childNodes .

La mayora de los navegadores devuelven un objeto NodeList para el


mtodo querySelectorAll () .

El cdigo siguiente selecciona todos <p> nodos de un documento:

Ejemplo
var myNodeList = document.querySelectorAll("p");

Los elementos de la NodeList pueden ser accedidos por un nmero de


ndice.

Para acceder al segundo nodo <p> puede escribir:

y = myNodeList[1];
Intntalo t mismo "

Nota: El ndice comienza en 0.


Lista de nodos DOM HTML Longitud
La propiedad longitud define el nmero de nodos de una lista de nodos:

Ejemplo
var myNodelist = document.querySelectorAll("p");
document.getElementById("demo").innerHTML = myNodelist.length;
Intntalo t mismo "

Ejemplo explic:

1. Crear una lista de todos los elementos <P>


2. Mostrar la longitud de la lista

La propiedad length es til cuando se desea colocar a travs de los


nodos de una lista de nodos:

Ejemplo
Cambiar el color de fondo de todos los elementos <p> en una lista de
nodos:

var myNodelist = document.querySelectorAll("p");


var i;
for (i = 0; i < myNodelist.length; i++) {
myNodelist[i].style.backgroundColor = "red";
}
Intntalo t mismo "

La diferencia entre un HTMLCollection y


una NodeList
Un HTMLCollection (captulo anterior) es una coleccin de elementos
HTML.

A NodeList es una coleccin de nodos de documentos.

En muchos casos esto es mucho lo mismo.

Tanto un objeto HTMLCollection y un objeto NodeList es una lista de


arreglo similar (coleccin) de objetos.
Ambos tienen una propiedad de longitud que define el nmero de
elementos de la lista (coleccin).

Ambos proporcionan un ndice (0, 1, 2, 3, 4, ...) para acceder a cada


artculo como una matriz.

artculos HTMLCollection puede acceder por su nombre, identificacin, o


nmero de ndice.

artculos NodeList slo se puede acceder por su nmero de ndice.

Slo el objeto NodeList puede contener nodos de atributo y nodos de


texto.

Una lista de nodos no es una matriz!

Una lista de nodos puede ver como una matriz, pero no lo es.

Puede bucle a travs de la lista de nodos y se refieren a sus nodos como


una matriz.

Sin embargo, no se puede utilizar mtodos de arreglos, como valueOf (),


push (), pop (), o unirse a () en una lista de nodos.

JavaScript Ventana - El modelo de


objetos Explorador
AnteriorSiguiente

El Modelo Examinador de objetos (BOM) permite Javascript para


"hablar con" el navegador.

El Modelo Examinador de objetos (BOM)


No existen normas oficiales para el B rowser O bject M odelo (BOM).

Dado que los navegadores modernos han puesto en prctica (casi) los
mismos mtodos y propiedades de JavaScript interactividad, que se
refiere a menudo, como los mtodos y las propiedades de la lista de
materiales.

El objeto de la ventana
La ventana de objeto es soportado por todos los
navegadores. Representa la ventana del navegador.

Todos los objetos globales de JavaScript, funciones y variables se


convierten automticamente en miembros del objeto ventana.

Las variables globales son propiedades del objeto de la ventana.

funciones globales son mtodos del objeto ventana.

Incluso el objeto de documento (DOM del HTML) es una propiedad del


objeto de la ventana:

window.document.getElementById("header");

es lo mismo que:

document.getElementById("header");

Tamao de ventana
Dos propiedades se pueden utilizar para determinar el tamao de la
ventana del navegador.

Ambas propiedades devuelven los tamaos en pxeles:

window.innerHeight - la altura interior de la ventana del


navegador (en pxeles)
window.innerWidth - la anchura interior de la ventana del
navegador (en pxeles)

La ventana del navegador (la ventana del navegador) no est incluyendo


barras de herramientas y barras de desplazamiento.

Para Internet Explorer 8, 7, 6, 5:

document.documentElement.clientHeight
document.documentElement.clientWidth
o
document.body.clientHeight
document.body.clientWidth

Una solucin prctica JavaScript (que abarca todos los navegadores):

Ejemplo
var w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;

var h = window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;
Intntalo t mismo "

El ejemplo muestra la altura de la ventana del navegador y anchura:


(NO incluyendo barras de herramientas / barras de desplazamiento)

Otros mtodos de ventana


Algunos otros mtodos:

window.open () - abrir una nueva ventana


window.close () - cerrar la ventana actual
window.moveTo () -Mover la ventana actual
window.resizeTo () -resize la ventana actual

JavaScript pantalla de la ventana


AnteriorSiguiente

El objeto window.screen contiene informacin acerca de la pantalla


del usuario.

Pantalla de la ventana
El window.screen objeto puede ser escrita sin el prefijo ventana.
propiedades:

screen.width
Screen.Height
screen.availWidth
screen.availHeight
screen.colorDepth
screen.pixelDepth

Ancho de pantalla de la ventana


La propiedad screen.width devuelve el ancho de la pantalla del visitante
en pxeles.

Ejemplo
Visualizar el ancho de la pantalla en pxeles:

document.getElementById("demo").innerHTML =
"Screen Width: " + screen.width;

El resultado ser:

Screen Width: 1366


Intntalo t mismo "

Pantalla de la ventana Altura


La propiedad Screen.Height devuelve la altura de la pantalla del visitante
en pxeles.

Ejemplo
Mostrar la altura de la pantalla en pxeles:

document.getElementById("demo").innerHTML =
"Screen Height: " + screen.height;

El resultado ser:
Screen Height: 768
Intntalo t mismo "

Pantalla de la ventana Ancho disponible


La propiedad screen.availWidth devuelve el ancho de la pantalla del
visitante, en pxeles, menos interfaz de caractersticas como la barra de
tareas de Windows.

Ejemplo
Mostrar la anchura disponible de la pantalla en pxeles:

document.getElementById("demo").innerHTML =
"Available Screen Width: " + screen.availWidth;

El resultado ser:

Available Screen Width: 1366


Intntalo t mismo "

Pantalla de la ventana disponible Altura


La propiedad screen.availHeight devuelve la altura de la pantalla del
visitante, en pxeles, menos interfaz de caractersticas como la barra de
tareas de Windows.

Ejemplo
Mostrar la altura disponible de la pantalla en pxeles:

document.getElementById("demo").innerHTML =
"Available Screen Height: " + screen.availHeight;

El resultado ser:

Available Screen Height: 728


Intntalo t mismo "

Ventana de pantalla Profundidad de color


La propiedad screen.colorDepth devuelve el nmero de bits utilizados
para mostrar un color.

Todos los ordenadores modernos utilizan 24 bits o 32 bits de hardware


para la resolucin de color:

24 bits = 16.777.216 diferentes "True Colors"


32 bits = 4,294,967,296 diferentes "Deep Colors"

Los equipos ms antiguos utilizan 16 bits: 65.536 diferentes


resoluciones "altos colores".

Muy viejas computadoras y telfonos celulares viejos utilizan 8 bits: 256


diferentes colores "VGA".

Ejemplo
Mostrar la profundidad de color de la pantalla en bits:

document.getElementById("demo").innerHTML =
"Screen Color Depth: " + screen.colorDepth;

El resultado ser:

Screen Color Depth: 24


Intntalo t mismo "

Los valores #rrggbb (RGB) utilizados en HTML representa "True Colors"


(16.777.216 colores diferentes)

Ventana pxel de la pantalla Profundidad


La propiedad screen.pixelDepth devuelve la profundidad de pxeles de la
pantalla.

Ejemplo
Mostrar la profundidad de pxel de la pantalla en bits:

document.getElementById("demo").innerHTML =
"Screen Pixel Depth: " + screen.pixelDepth;

El resultado ser:

Screen Pixel Depth: 24


Intntalo t mismo "

Para las computadoras modernas, la profundidad de color y profundidad


de pxeles son iguales.

JavaScript ubicacin de ventana


AnteriorSiguiente

El objeto window.location puede ser utilizado para obtener la


corriente pgina de direcciones (URL) y para redirigir el navegador a
una pgina nueva.

ventana Ubicacin
El window.location objeto puede ser escrita sin el prefijo ventana.

Algunos ejemplos:

window.location.href devuelve el href (URL) de la pgina actual


window.location.hostname devuelve el nombre de dominio del
proveedor de alojamiento web
window.location.pathname devuelve la ruta y el nombre de la
pgina actual
window.location.protocol devuelve el protocolo web utilizado (http:
o https :)
window.location.assign carga un nuevo documento

Ventana Ubicacin Href


El window.location.href propiedad devuelve la URL de la pgina
actual.

Ejemplo
Mostrar la href (URL) de la pgina actual:

document.getElementById("demo").innerHTML =
"Page location is " + window.location.href;

El resultado es:

Page location is
https://www.w3schools.com/js/js_window_location.asp
Intntalo t mismo "

Ventana Ubicacin nombre de host


El window.location.hostname propiedad devuelve el nombre del host
de Internet (de la pgina actual).

Ejemplo
Mostrar el nombre del host:

document.getElementById("demo").innerHTML =
"Page hostname is " + window.location.hostname;

El resultado es:

Page hostname is www.w3schools.com


Intntalo t mismo "

Nombre de ruta de ubicacin de ventana


El window.location.pathname propiedad devuelve el nombre de ruta
de la pgina actual.
Ejemplo
Visualizar el nombre de la ruta de la URL actual:

document.getElementById("demo").innerHTML =
"Page path is " + window.location.pathname;

El resultado es:

/js/js_window_location.asp
Intntalo t mismo "

Ventana del protocolo de ubicacin


El window.location.protocol propiedad devuelve el protocolo de
Internet de la pgina.

Ejemplo
Mostrar el protocolo de Internet:

document.getElementById("demo").innerHTML =
"Page protocol is " + window.location.protocol;

El resultado es:

Page protocol is https:


Intntalo t mismo "

Ventana Ubicacin Puerto


El window.location.port propiedad devuelve el nmero del puerto de
host a Internet (de la pgina actual).

Ejemplo
Mostrar el nombre del host:

document.getElementById("demo").innerHTML =
"Port number is " + window.location.port;
El resultado es:

Port name is
Intntalo t mismo "

La mayora de los navegadores no mostrarn nmeros de puerto por


defecto (80 para HTTP y 443 para HTTPS)

Ventana Ubicacin Asignar


El window.location.assign () mtodo carga un nuevo documento.

Ejemplo
Cargar un nuevo documento:

<html>
<head>
<script>
function newDoc() {
window.location.assign("https://www.w3schools.com")
}
</script>
</head>
<body>

<input type="button" value="Load new


document" onclick="newDoc()">

</body>
</html>
Intntalo t mismo "

JavaScript ventana de la historia


AnteriorSiguiente

El objeto window.history contiene el historial de los navegadores.


Historia ventana
El window.history objeto puede ser escrita sin el prefijo ventana.

Para proteger la privacidad de los usuarios, existen limitaciones a la


forma en JavaScript puede acceder a este objeto.

Algunos mtodos:

history.back () - equivale a hacer clic de nuevo en el navegador


history.forward () - equivale a hacer clic adelante en el navegador

Ventana Historial Volver


El mtodo history.back () carga la URL anterior en la lista del historial.

Esto es lo mismo que hacer clic en el botn Atrs en el navegador.

Ejemplo
Crear un botn de retroceso en una pgina:

<html>
<head>
<script>
function goBack() {
window.history.back()
}
</script>
</head>
<body>

<input type="button" value="Back" onclick="goBack()">

</body>
</html>

La salida del cdigo anterior ser:


Ventana de la historia hacia adelante
La historia mtodo forward () carga el siguiente URL en la lista del
historial.

Esto es lo mismo que hacer clic en el botn de avance en el navegador.

Ejemplo
Crear un botn de avance en una pgina:

<html>
<head>
<script>
function goForward() {
window.history.forward()
}
</script>
</head>
<body>

<input type="button" value="Forward" onclick="goForward()">

</body>
</html>

La salida del cdigo anterior ser:

JavaScript Window Navigator


AnteriorSiguiente

El objeto window.navigator contiene informacin sobre el navegador


del visitante.

ventana del navegador


El window.navigator objeto puede ser escrita sin el prefijo ventana.

Algunos ejemplos:

navigator.appName
navigator.appCodeName
navigator.platform

Las cookies del navegador


El cookieEnabled propiedad devuelve cierto si estn activadas las
cookies, de lo contrario falsa:

Ejemplo
<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML =
"cookiesEnabled is " + navigator.cookieEnabled;
</script>
Intntalo t mismo "

Nombre de la aplicacin del navegador


El appName propiedad devuelve el nombre de la aplicacin del
navegador:

Ejemplo
<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML =
"navigator.appName is " + navigator.appName;
</script>
Intntalo t mismo "

Bastante extrao, "Netscape" es el nombre de la aplicacin, tanto para


EI11, Chrome, Firefox y Safari.
Nombre cdigo de aplicacin del
navegador
El appCodeName propiedad devuelve el nombre cdigo de la aplicacin
del navegador:

Ejemplo
<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML =
"navigator.appCodeName is " + navigator.appCodeName;
</script>
Intntalo t mismo "

"Mozilla" es el nombre cdigo de la aplicacin, tanto para Chrome,


Firefox, Internet Explorer, Safari y Opera.

El motor del navegador


El producto propiedad devuelve el nombre del producto del motor del
navegador:

Ejemplo
<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML =
"navigator.product is " + navigator.product;
</script>
Intntalo t mismo "

No confe en esto. La mayora de los navegadores devuelve "Gecko"


como nombre del producto !!

La versin del explorador


El appVersion propiedad devuelve informacin sobre la versin del
navegador:

Ejemplo
<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML =
navigator.appVersion;
</script>
Intntalo t mismo "

El navegador de Agente
El userAgent propiedad devuelve el encabezado de agente de usuario
enviado por el navegador al servidor:

Ejemplo
<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = navigator.userAgent;
</script>
Intntalo t mismo "

Advertencia !!!
La informacin del navegador de objetos a menudo puede ser engaosa,
y no debe ser utilizado para detectar las versiones del navegador
porque:

Los diferentes navegadores pueden utilizar el mismo nombre


Los datos del navegador pueden ser cambiados por el propietario
del navegador
Algunos navegadores identifican incorrectamente a s mismos
ensayos in situ de bypass
Los navegadores no pueden informar de los nuevos sistemas
operativos, dado a conocer a ms tardar el navegador

La Plataforma Navegador
La plataforma de propiedad devuelve la plataforma del navegador
(sistema operativo):

Ejemplo
<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = navigator.platform;
</script>
Intntalo t mismo "

El idioma Navegador
El lenguaje de propiedad devuelve el idioma del navegador:

Ejemplo
<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = navigator.language;
</script>
Intntalo t mismo "

Es el navegador en lnea?
El onLine propiedad devuelve verdadero si el navegador est en lnea:

Ejemplo
<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = navigator.onLine;
</script>
Intntalo t mismo "

Est habilitado Java?


El javaEnabled () mtodo devuelve verdadero si Java est habilitado:

Ejemplo
<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML =
navigator.javaEnabled();
</script>
Intntalo t mismo "

JavaScript emergentes Cajas


AnteriorSiguiente

JavaScript tiene tres tipos de cajas emergentes: cuadro de alerta,


cuadro Confirmar, y cuadro de aviso.

Caja de alerta
Un cuadro de alerta se utiliza a menudo si usted quiere asegurarse de
que la informacin llega hasta el usuario.

Cuando un cuadro de alerta aparece, el usuario tendr que hacer clic en


"Aceptar" para continuar.

Sintaxis
window.alert("sometext");

El window.alert () mtodo puede ser escrita sin el prefijo ventana.

Ejemplo
alert("I am an alert box!");

Intntalo t mismo "


confirmar Box
Un cuadro Confirmar menudo se utiliza si desea que el usuario verifique
o aceptar algo.

Cuando un cuadro Confirmar aparece, el usuario tendr que haga clic en


"Aceptar" o "Cancelar" para continuar.

Si el usuario hace clic en "Aceptar", el cuadro devuelve verdadero. Si el


usuario hace clic en "Cancelar", la caja vuelve falsa.

Sintaxis
window.confirm("sometext");

El window.confirm () mtodo puede ser escrita sin el prefijo ventana.

Ejemplo
if (confirm("Press a button!") == true) {
txt = "You pressed OK!";
} else {
txt = "You pressed Cancel!";
}
Intntalo t mismo "

Caja pronta
Un cuadro de mensaje se utiliza a menudo si desea que el usuario
introduzca un valor antes de entrar en una pgina.

Cuando un cuadro de mensaje aparece, el usuario tendr que haga clic


en "Aceptar" o "Cancelar" para continuar despus de introducir un valor
de entrada.

Si el usuario hace clic en "OK" del cuadro devuelve el valor de


entrada. Si el usuario hace clic en "Cancelar" la caja devuelve un valor
nulo.

Sintaxis
window.prompt("sometext","defaultText");
El window.prompt () mtodo puede ser escrita sin el prefijo ventana.

Ejemplo
var person = prompt("Please enter your name", "Harry Potter");

if (person == null || person == "") {


txt = "User cancelled the prompt.";
} else {
txt = "Hello " + person + "! How are you today?";
}
Intntalo t mismo "

Saltos de lnea
Para visualizar los saltos de lnea dentro de una caja emergente, utilice
una barra invertida seguida por el carcter n.

Ejemplo
alert("Hello\nHow are you?");

Intntalo t mismo "

JavaScript eventos de tiempo


AnteriorSiguiente

1
2
3
4
5 JavaScript puede ejecutar en intervalos de tiempo.
6
7
8 Esto se conoce como eventos de tiempo.
9
10
11
12
Timing Eventos
El objeto de la ventana permite la ejecucin de cdigo a intervalos de
tiempo especificados.

Estos intervalos de tiempo son llamados eventos de tiempo.

Los dos mtodos principales para usar con JavaScript son:

setTimeout ( funcin, milisegundos )


Ejecuta una funcin, despus de esperar un nmero especificado
de milisegundos.
setInterval ( funcin, milisegundos )
Igual que setTimeout (), pero repite la ejecucin de la funcin
continuamente.

El setTimeout () y setInterval () son los dos mtodos del objeto HTML


Ventana DOM.

El setTimeout () Mtodo
window.setTimeout(function, milliseconds);

El window.setTimeout () mtodo puede ser escrita sin el prefijo


ventana.

El primer parmetro es una funcin a ejecutar.

El segundo parmetro indica el nmero de milisegundos antes de la


ejecucin.

Ejemplo
Haga clic en un botn. Espere 3 segundos, y la pgina alertar "Hola":

<button onclick="setTimeout(myFunction, 3000)">Try it</button>

<script>
function myFunction() {
alert('Hello');
}
</script>
Intntalo t mismo "
Cmo detener la ejecucin?
El mtodo clearTimeout () detiene la ejecucin de la funcin especificada
en setTimeout ().

window.clearTimeout(timeoutVariable)

El window.clearTimeout () mtodo puede ser escrita sin el prefijo


ventana.

El mtodo clearTimeout () utiliza la variable de regresar de setTimeout


():

myVar = setTimeout(function, milliseconds);


clearTimeout(myVar);

Si la funcin ya no se ha ejecutado, se puede detener la ejecucin


llamando al mtodo clearTimeout ():

Ejemplo
Mismo ejemplo anterior, pero con un botn aadido "Stop":

<button onclick="myVar = setTimeout(myFunction, 3000)">Try


it</button>

<button onclick="clearTimeout(myVar)">Stop it</button>


Intntalo t mismo "

El setInterval () Mtodo
El mtodo setInterval () se repite una funcin dada en cada intervalo de
tiempo dado.

window.setInterval(function, milliseconds);

El window.setInterval () mtodo puede ser escrita sin el prefijo


ventana.

El primer parmetro es la funcin a ejecutar.


El segundo parmetro indica la longitud del intervalo de tiempo entre
cada ejecucin.

Este ejemplo ejecuta una funcin llamada "myTimer" una vez por
segundo (como un reloj digital).

Ejemplo
Mostrar la hora actual:

var myVar = setInterval(myTimer, 1000);

function myTimer() {
var d = new Date();
document.getElementById("demo").innerHTML =
d.toLocaleTimeString();
}
Intntalo t mismo "

Hay 1000 milisegundos en un segundo.

Cmo detener la ejecucin?


El mtodo clearInterval () se detiene la ejecucin de la funcin
especificada en el mtodo setInterval ().

window.clearInterval(timerVariable)

El window.clearInterval ( ) mtodo puede ser escrita sin el prefijo


ventana.

El mtodo clearInterval () utiliza la variable de regresar de setInterval


():

myVar = setInterval(function, milliseconds);


clearInterval(myVar);
Ejemplo
Mismo ejemplo anterior, pero hemos aadido un botn "Detener el
tiempo":

<p id="demo"></p>

<button onclick="clearInterval(myVar)">Stop time</button>


<script>
var myVar = setInterval(myTimer, 1000);
function myTimer() {
var d = new Date();
document.getElementById("demo").innerHTML =
d.toLocaleTimeString();
}
</script>
Intntalo t mismo "

Ms ejemplos
Otra sincronizacin sencilla

Un reloj creado con un evento de calendario

JavaScript cookies
AnteriorSiguiente

Las cookies permiten almacenar informacin del usuario en pginas


web.

Cules son las cookies?


Las cookies son datos, almacenados en archivos de texto pequeos, en
el equipo.

Cuando un servidor web ha enviado una pgina web a un navegador, la


conexin se cierra, y el servidor se olvida de todo lo relacionado con el
usuario.

Las cookies se inventaron para resolver el problema de "cmo recordar


informacin sobre el usuario":

Cuando un usuario visita una pgina web, su nombre puede ser


almacenado en una cookie.
La prxima vez que el usuario visita la pgina, la cookie
"recuerda" su nombre.
Las cookies se guardan en pares de nombre y valor como:

username = John Doe

Cuando un navegador solicita una pgina web desde un servidor, las


cookies de la pgina se agrega a la solicitud. De esta manera el servidor
recibe los datos necesarios para "recordar" informacin acerca de los
usuarios.

Ninguno de los ejemplos ms adelante funcionar si su navegador tiene


las cookies locales de apoyo apagado.

Crear una cookie con Javascript


JavaScript puede crear, leer y borrar las cookies con
el document.cookie propiedad.

Con JavaScript, una cookie puede ser creado de esta manera:

document.cookie = "username=John Doe";

Tambin puede agregar una fecha de caducidad (en hora UTC). Por
defecto, se elimina la cookie cuando se cierra el navegador:

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013


12:00:00 UTC";

Con un parmetro de ruta, puede decirle al navegador qu camino


pertenece a la cookie. Por defecto, la cookie pertenece a la pgina
actual.

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013


12:00:00 UTC; path=/";

Leer una cookie con Javascript


Con JavaScript, las cookies pueden ser ledas como esto:

var x = document.cookie;
document.cookie devolver todas las cookies en una secuencia muy
similar: cookie1 = valor; cookie2 = valor; cookie3 = valor;

Cambiar una cookie con Javascript


Con JavaScript, puede cambiar una galleta de la misma manera que lo
crea:

document.cookie = "username=John Smith; expires=Thu, 18 Dec 2013


12:00:00 UTC; path=/";

La vieja cookie es sobrescrito.

Eliminar una cookie con Javascript


Eliminacin de una cookie es muy simple.

Usted no tiene que especificar un valor de la cookie cuando se elimina


una cookie.

Slo hay que establecer el parmetro expira a una fecha pasada:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00


UTC; path=/;";

Debe definir la ruta de cookies para asegurarse de que las borre


derecha.

Algunos navegadores no permitirn que se elimina una cookie si no se


especifica la ruta de acceso.

La cadena de cookies
La propiedad document.cookie se parece a una cadena de texto
normal. Pero no lo es.

Incluso si se escribe una cadena de galletas a toda document.cookie,


cuando lo lea de nuevo, slo se puede ver el par nombre-valor de la
misma.
Si se establece una nueva cookie, cookies con una antigedad no se
sobrescriben. Se aade la nueva cookie para document.cookie, por lo
que si usted lee document.cookie nuevo obtendr algo como:

cookie1 = valor; cookie2 = valor;

Mostrar todas las cookies Crear 1 de la galleta Crear 2 de la


galleta Eliminar 1 de la galleta Eliminar 2 de la galleta

Si desea encontrar el valor de una galleta especificada, debe escribir una


funcin de JavaScript que busca el valor de la cookie en la cadena de
galleta.

JavaScript Ejemplo galleta


En el ejemplo a seguir, vamos a crear una cookie que almacena el
nombre de un visitante.

La primera vez que un visitante llega a la pgina web, se le pedir que


complete su nombre. El nombre se almacena en una cookie.

La prxima vez que el visitante llega a la misma pgina, recibir un


mensaje de bienvenida.

Para el ejemplo vamos a crear 3 funciones de JavaScript:

1. Una funcin para establecer un valor de la cookie


2. Una funcin para obtener un valor de la cookie
3. Una funcin para comprobar un valor de la cookie

Una funcin para establecer una cookie


En primer lugar, creamos una funcin que almacena el nombre del
visitante en una variable cookie:

Ejemplo
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires
+ ";path=/";
}

Ejemplo explic:

Los parmetros de la funcin de arriba son el nombre de la cookie


(CNAME), el valor de la cookie (cValue), y el nmero de das hasta que
la cookie debe expirar (exdays).

La funcin establece una cookie sumando el cookiename, el valor de la


cookie, y la vence cadena.

Una Funcin para obtener una cookie


A continuacin, creamos una funcin que devuelve el valor de una
cookie especificada:

Ejemplo
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}

Funciones que se explican:

Tome el cookiename como parmetro (CNAME).

Crear una variable (nombre) con el texto a buscar (cname + "=").

Decodificar la cadena de galletas, galletas de manejar con caracteres


especiales, por ejemplo, '$'

document.cookie Split, en punto y coma en una matriz llamada ca (ca =


decodedCookie.split ( ';')).
Loop a travs de la matriz de ca (i = 0; i <ca.length; i ++), y lectura a
cada valor de c = ca [i]).

Si la cookie se encontr (c.indexOf (nombre) == 0), devolver el valor de


la cookie (c.substring (name.length, c.length).

Si no se encuentra la cookie, volver "".

Una funcin para comprobar una cookie


Por ltimo, creamos la funcin que comprueba si se ha establecido una
cookie.

Si se establece la cookie se mostrar un saludo.

Si la cookie no est establecido, se mostrar un cuadro de mensaje,


preguntando por el nombre del usuario, y almacena la cookie nombre de
usuario para 365 das, llamando a la funcin setCookie:

Ejemplo
function checkCookie() {
var username = getCookie("username");
if (username != "") {
alert("Welcome again " + username);
} else {
username = prompt("Please enter your name:", "");
if (username != "" && username != null) {
setCookie("username", username, 365);
}
}
}

Todos juntos ahora


Ejemplo
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires
+ ";path=/";
}

function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}

function checkCookie() {
var user = getCookie("username");
if (user != "") {
alert("Welcome again " + user);
} else {
user = prompt("Please enter your name:", "");
if (user != "" && user != null) {
setCookie("username", user, 365);
}
}
}
Intntalo t mismo "

El ejemplo anterior se ejecuta la funcin checkCookie () cuando se carga


la pgina.

AJAX Introduccin
AnteriorSiguiente

AJAX es el sueo de un desarrollador, ya que se puede:

Leer datos desde un servidor web - despus de que la pgina


se ha cargado
Actualizar una pgina web sin tener que recargar la pgina
Enviar datos a un servidor web - en el fondo

Ejemplo AJAX

Let AJAX change this text


Change Content

Intntalo t mismo "

AJAX Ejemplo Explicacin


Pgina HTML
<!DOCTYPE html>
<html>
<body>

<div id="demo">
<h2>Let AJAX change this text</h2>
<button type="button" onclick="loadDoc()">Change
Content</button>
</div>

</body>
</html>

La pgina HTML contiene una seccin <div> y <botn>.

La seccin <div> se utiliza para mostrar informacin de un servidor.

El botn <> llama a una funcin (si se hace clic).

La funcin solicita datos desde un servidor web y lo muestra:

loadDoc funcin ()
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {

document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
}
Qu es AJAX?
AJAX = A sncrono J avascript A nd X ML.

AJAX no es un lenguaje de programacin.

AJAX slo utiliza una combinacin de:

Un navegador incorporado en el objeto XMLHttpRequest (a datos


de solicitud desde un servidor web)
JavaScript y HTML DOM (mostrar o usar los datos)

AJAX es un nombre engaoso. aplicaciones AJAX pueden utilizar XML


para transportar datos, pero es igualmente comn para transportar
datos como texto plano o texto JSON.

AJAX permite que las pginas web se actualicen de forma asincrnica


mediante el intercambio de datos con un servidor Web detrs de las
escenas. Esto significa que es posible actualizar partes de una pgina
web, sin necesidad de recargar la pgina entera.

Cmo funciona AJAX

1. Se produce un evento en una pgina web (la pgina se carga, se hace


clic en un botn)
2. Un objeto XMLHttpRequest es creado por JavaScript
3. El objeto XMLHttpRequest enva una peticin a un servidor web
4. El servidor procesa la solicitud
5. El servidor enva una respuesta de vuelta a la pgina Web
6. La respuesta es ledo por JavaScript
7. La accin apropiada (como actualizacin de la pgina) se realiza
mediante JavaScript

AJAX - El Objeto XMLHttpRequest


AnteriorSiguiente

La piedra angular de AJAX es el objeto XMLHttpRequest.

El objeto XMLHttpRequest
Todos los navegadores modernos soportan el objeto XMLHttpRequest.

El objeto XMLHttpRequest se puede utilizar para intercambiar datos con


un servidor Web detrs de las escenas. Esto significa que es posible
actualizar partes de una pgina web, sin necesidad de recargar la pgina
entera.

Crear un objeto XMLHttpRequest


Todos los navegadores modernos (Chrome, Firefox, Internet Explorer 7
+, Edge, Safari, Opera) tienen un objeto incorporado en
XMLHttpRequest.

Sintaxis para crear un objeto XMLHttpRequest:

variable = new XMLHttpRequest();


Ejemplo
var xhttp = new XMLHttpRequest();
Intntalo t mismo "
El acceso entre dominios
Por razones de seguridad, los navegadores modernos no permiten el
acceso a travs de dominios.

Esto significa que tanto la pgina web y el archivo XML que intenta
cargar, deben estar ubicados en el mismo servidor.

Los ejemplos de W3Schools todos los archivos XML abiertos situados en


el dominio W3Schools.

Si desea utilizar el ejemplo anterior en una de sus propias pginas web,


los archivos XML que cargue deben estar ubicados en su propio servidor.

Navegadores de Edad (IE5 y IE6)


Las versiones antiguas de Internet Explorer (5/6) utilizan un objeto
ActiveX en lugar del objeto XMLHttpRequest:

variable = new ActiveXObject("Microsoft.XMLHTTP");

Para manejar IE5 e IE6, comprobar si el navegador es compatible con el


objeto XMLHttpRequest, o bien crear un objeto ActiveX:

Ejemplo
if (window.XMLHttpRequest) {
// code for modern browsers
xmlhttp = new XMLHttpRequest();
} else {
// code for old IE browsers
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
Intntalo t mismo "

Mtodos objeto XMLHttpRequest


Method Description

new XMLHttpRequest() Creates a new XMLHttpRequest object

abort() Cancels the current request

getAllResponseHeaders() Returns header information

getResponseHeader() Returns specific header information

open(method, url, async, user, psw) Specifies the request

method: the request type GET or POST


url: the file location
async: true (asynchronous) or false (synchronou
user: optional user name
psw: optional password

send() Sends the request to the server


Used for GET requests

send(string) Sends the request to the server.


Used for POST requests

setRequestHeader() Adds a label/value pair to the header to be sent

Propiedades del objeto XMLHttpRequest


Property Description

onreadystatechange Defines a function to be called when the


readyState property changes

readyState Holds the status of the XMLHttpRequest.


0: request not initialized
1: server connection established
2: request received
3: processing request
4: request finished and response is ready

responseText Returns the response data as a string

responseXML Returns the response data as XML data

status Returns the status-number of a request


200: "OK"
403: "Forbidden"
404: "Not Found"
For a complete list go to the Http Messages
Reference

statusText Returns the status-text (e.g. "OK" or "Not


Found")

AJAX - Enva una solicitud a un


servidor
AnteriorSiguiente

El objeto XMLHttpRequest se usa para intercambiar datos con un


servidor.

Enviar una solicitud a un servidor


Para enviar una peticin a un servidor, se utiliza el open () y send ()
mtodos del objeto XMLHttpRequest:

xhttp.open("GET", "ajax_info.txt", true);


xhttp.send();
Method Description

open(method, url, async) Specifies the type of request

method: the type of request: GET or POST


url: the server (file) location
async: true (asynchronous) or false (synchronous)

send() Sends the request to the server (used for GET)

send(string) Sends the request to the server (used for POST)

GET o POST?
GET es ms simple y ms rpido que la POST, y se puede utilizar en la
mayora de los casos.

Sin embargo, siempre use peticiones POST cuando:

Un archivo de cach no es una opcin (actualizar un archivo o


base de datos en el servidor).
El envo de una gran cantidad de datos al servidor (POST no tiene
limitaciones de tamao).
Envo de la entrada del usuario (que puede contener caracteres
desconocidos), POST es ms robusto y seguro que GET.

Las peticiones GET


Una peticin GET sencilla:

Ejemplo
xhttp.open("GET", "demo_get.asp", true);
xhttp.send();
Intntalo t mismo "

En el ejemplo anterior, es posible obtener un resultado almacenado en


cach. Para evitar esto, aade un identificador nico a la URL:

Ejemplo
xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
xhttp.send();
Intntalo t mismo "

Si desea enviar informacin con el mtodo GET, agregar la informacin


en la URL:

Ejemplo
xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford", true);
xhttp.send();
Intntalo t mismo "

peticiones POST
Una solicitud POST sencilla:

Ejemplo
xhttp.open("POST", "demo_post.asp", true);
xhttp.send();
Intntalo t mismo "

Para publicar datos como un formulario HTML, aadir una cabecera HTTP
con setRequestHeader (). Especificar los datos que desea enviar en el
mtodo send ():

Ejemplo
xhttp.open("POST", "ajax_test.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-
urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Intntalo t mismo "
Method Description

setRequestHeader(header, value) Adds HTTP headers to the request

header: specifies the header name


value: specifies the header value

La url - un archivo en un servidor


El parmetro url del mtodo open (), es una direccin a un archivo en un
servidor:

xhttp.open("GET", "ajax_test.asp", true);

El archivo puede ser cualquier tipo de archivo, como .txt y .xml o


archivos de secuencias de comandos de servidor como .asp y .php (que
puede llevar a cabo acciones en el servidor antes de enviar la respuesta
de vuelta).

Asncrono - Verdadero o Falso?


solicitudes de servidor deben ser enviados de forma asncrona.

El parmetro asncrono del mtodo open () se debe establecer en true:

xhttp.open("GET", "ajax_test.asp", true);

Mediante el envo de forma asncrona, el cdigo JavaScript no tiene que


esperar a la respuesta del servidor, sino que puede:

ejecutar otros scripts a la espera de respuesta del servidor


hacer frente a la respuesta despus de la respuesta est listo

La propiedad onreadystatechange
Con el objeto XMLHttpRequest se puede definir una funcin a ejecutar
cuando la solicitud recibe una respuesta.

La funcin se define el en el onreadystatechange propiedad del objeto


XMLHttpResponse:

Ejemplo
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {

document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Intntalo t mismo "

Usted aprender ms sobre onreadystatechange en un captulo


posterior.

Solicitud sncrona
Para ejecutar una peticin sncrona, cambiar el tercer parmetro en el
mtodo open () en false:

xhttp.open("GET", "ajax_info.txt", false);

A veces asncrono = false se utilizan para la prueba rpida. Tambin


encontrar peticiones sncronas en mayor cdigo JavaScript.

Dado que el cdigo va a esperar a la finalizacin del servidor, no hay


necesidad de una funcin onreadystatechange:

Ejemplo
xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
Intntalo t mismo "

XMLHttpRequest sncrono (async = false) no se recomienda debido a


que el JavaScript dejar de ejecutarse hasta que la respuesta del
servidor est listo. Si el servidor est ocupado o lento, la aplicacin se
bloquea o se detiene.
XMLHttpRequest sncrono est en proceso de ser retirado de la web
estndar, pero este proceso puede durar muchos aos.

herramientas de desarrollo modernas son animados para advertir sobre


el uso de peticiones sncronas y pueden lanzar una excepcin
InvalidAccessError cuando se produzca.

AJAX - Servidor de respuesta


AnteriorSiguiente

La propiedad onreadystatechange
El readyState propiedad se mantiene el estado de la XMLHttpRequest.

El onreadystatechange propiedad define una funcin que se ejecutar


cuando cambia el readyState.

El estado de la propiedad y la statusText propiedad se mantiene el


estado del objeto XMLHttpRequest.

Property Description

onreadystatechange Defines a function to be called when the readyState property chan

readyState Holds the status of the XMLHttpRequest.


0: request not initialized
1: server connection established
2: request received
3: processing request
4: request finished and response is ready

status 200: "OK"


403: "Forbidden"
404: "Page not found"
For a complete list go to the Http Messages Reference

statusText Returns the status-text (e.g. "OK" or "Not Found")

La funcin onreadystatechange se llama cada vez que cambia


readyState.

Cuando readyState es 4 y el estado es de 200, la respuesta est listo:

Ejemplo
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
}
Intntalo t mismo "

El evento se dispara onreadystatechange cuatro veces (1-4), una vez


para cada cambio en la readyState.

Usando una funcin de devolucin de


llamada
Una funcin de devolucin de llamada es una funcin pasa como
parmetro a otra funcin.

Si usted tiene ms de una tarea AJAX en una pgina web, se debe crear
una funcin para ejecutar el objeto XMLHttpRequest, y una llamada de
retorno para cada tarea AJAX.

La llamada a la funcin debe contener la URL y cul es la funcin a


llamar cuando la respuesta est listo.
Ejemplo
loadDoc("url-1", myFunction1);

loadDoc("url-2", myFunction2);

function loadDoc(url, cFunction) {


var xhttp;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
cFunction(this);
}
};
xhttp.open("GET", url, true);
xhttp.send();
}

function myFunction1(xhttp) {
// action goes here
}
function myFunction2(xhttp) {
// action goes here
}
Intntalo t mismo "

Propiedades de respuesta del servidor

Property Description

responseText get the response data as a string

responseXML get the response data as XML data

Mtodos de respuesta del servidor


Method Description

getResponseHeader() Returns specific header information from the server resourc

getAllResponseHeaders() Returns all the header information from the server resource

La propiedad responseText
El responseText propiedad devuelve la respuesta del servidor como
una cadena JavaScript, y se puede utilizar en consecuencia:

Ejemplo
document.getElementById("demo").innerHTML = xhttp.responseText;
Intntalo t mismo "

La propiedad responseXML
El objeto HttpRequest XML tiene un analizador XML integrado.

El responseXML propiedad devuelve la respuesta del servidor como un


objeto DOM XML.

El uso de esta propiedad se puede analizar la respuesta como un objeto


DOM XML:

Ejemplo
Solicitar el archivo cd_catalog.xml y analizar la respuesta:

xmlDoc = xhttp.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName("ARTIST");
for (i = 0; i < x.length; i++) {
txt += x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
xhttp.open("GET", "cd_catalog.xml", true);
xhttp.send();
Intntalo t mismo "

Usted va a aprender mucho ms sobre XML DOM DOM en los captulos


de este tutorial.

Los getAllResponseHeaders () Mtodo


El getAllResponseHeaders () mtodo devuelve toda la informacin de
cabecera de la respuesta del servidor.

Ejemplo
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.getAllResponseHeaders();
}
};
Intntalo t mismo "

El getResponseHeader () Mtodo
El getResponseHeader () mtodo devuelve la informacin de cabecera
especfica de la respuesta del servidor.

Ejemplo
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.getResponseHeader("Last-Modified");
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Intntalo t mismo "
AJAX Ejemplo XML
AnteriorSiguiente

AJAX se puede utilizar para la comunicacin interactiva con un


archivo XML.

Ejemplo XML AJAX


El siguiente ejemplo demostrar cmo una pgina web puede recuperar
informacin de un archivo XML con AJAX:

Ejemplo
Get CD info

Intntalo t mismo "

ejemplo Explicacin
Cuando un usuario hace clic en el botn "Obtener informacin de CD"
anterior, se ejecuta la funcin loadDoc ().

La funcin loadDoc () crea un objeto XMLHttpRequest, aade la funcin


a ejecutar cuando la respuesta del servidor est listo, y enva la solicitud
al servidor fuera.

Cuando la respuesta del servidor est listo, una tabla HTML se


construye, los nodos (elementos) se extraen del archivo XML, y
finalmente se actualiza el elemento de "demo" con la tabla HTML lleno
de datos XML:

LoadXMLDoc ()
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET", "cd_catalog.xml", true);
xhttp.send();
}
function myFunction(xml) {
var i;
var xmlDoc = xml.responseXML;
var table="<tr><th>Artist</th><th>Title</th></tr>";
var x = xmlDoc.getElementsByTagName("CD");
for (i = 0; i <x.length; i++) {
table += "<tr><td>" +

x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue +
"</td><td>" +

x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue +
"</td></tr>";
}
document.getElementById("demo").innerHTML = table;
}

El archivo XML
El archivo XML que se utiliza en el ejemplo anterior se ve as:
" cd_catalog.xml ".

AJAX PHP Ejemplo


AnteriorSiguiente

AJAX se utiliza para crear aplicaciones ms interactivas.

AJAX PHP Ejemplo


El siguiente ejemplo demuestra cmo una pgina web puede
comunicarse con un servidor web, mientras que los tipos de caracteres
de un usuario en un campo de entrada:
Ejemplo
Start typing a name in the input field below:

First name:

Suggestions:

ejemplo Explicacin
En el ejemplo anterior, cuando un usuario escribe un carcter en el
campo de entrada, una funcin llamada se ejecuta "() ShowHint".

La funcin se activa por el evento onkeyup.

Aqu est el cdigo HTML:

Ejemplo
<html>
<head>
<script>
function showHint(str) {
if (str.length == 0) {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {

document.getElementById("txtHint").innerHTML = this.responseText
;
}
};
xmlhttp.open("GET", "gethint.php?q=" + str, true);
xmlhttp.send();
}
}
</script>
</head>
<body>
<p><b>Start typing a name in the input field below:</b></p>
<form>
First name: <input type="text" onkeyup="showHint(this.value)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>
</body>
</html>
Intntalo t mismo "

Cdigo explicacin:

En primer lugar, comprobar si el campo de entrada est vaca (str.length


== 0). Si es as, borrar el contenido del marcador de posicin txtHint y
salir de la funcin.

Sin embargo, si el campo de entrada no est vaca, haga lo siguiente:

Crear un objeto XMLHttpRequest


Cree la funcin a ejecutar cuando la respuesta del servidor est
listo
Enviar la solicitud fuera a un archivo PHP (gethint.php) en el
servidor
Observe que se agrega gethint.php parmetro q? Q = "+ str
La variable str mantiene el contenido del campo de entrada

El PHP Archivo - "gethint.php"


El archivo PHP comprueba una serie de nombres, y devuelve el nombre
correspondiente (s) al navegador:

<?php
// Array with names
$a[] = "Anna";
$a[] = "Brittany";
$a[] = "Cinderella";
$a[] = "Diana";
$a[] = "Eva";
$a[] = "Fiona";
$a[] = "Gunda";
$a[] = "Hege";
$a[] = "Inga";
$a[] = "Johanna";
$a[] = "Kitty";
$a[] = "Linda";
$a[] = "Nina";
$a[] = "Ophelia";
$a[] = "Petunia";
$a[] = "Amanda";
$a[] = "Raquel";
$a[] = "Cindy";
$a[] = "Doris";
$a[] = "Eve";
$a[] = "Evita";
$a[] = "Sunniva";
$a[] = "Tove";
$a[] = "Unni";
$a[] = "Violet";
$a[] = "Liza";
$a[] = "Elizabeth";
$a[] = "Ellen";
$a[] = "Wenche";
$a[] = "Vicky";

// get the q parameter from URL


$q = $_REQUEST["q"];

$hint = "";

// lookup all hints from array if $q is different from ""


if ($q !== "") {
$q = strtolower($q);
$len=strlen($q);
foreach($a as $name) {
if (stristr($q, substr($name, 0, $len))) {
if ($hint === "") {
$hint = $name;
} else {
$hint .= ", $name";
}
}
}
}

// Output "no suggestion" if no hint was found or output correct


values
echo $hint === "" ? "no suggestion" : $hint;
?>
AJAX ASP Ejemplo
AnteriorSiguiente

AJAX se utiliza para crear aplicaciones ms interactivas.

AJAX ASP Ejemplo


El siguiente ejemplo demostrar cmo una pgina web puede
comunicarse con un servidor web, mientras que unos caracteres de tipo
de usuario en un campo de entrada:

Ejemplo
Start typing a name in the input field below:

First name: Suggestions:

ejemplo Explicacin
En el ejemplo anterior, cuando un usuario escribe un carcter en el
campo de entrada, una funcin llamada se ejecuta "() ShowHint".

La funcin se activa por el evento onkeyup.

Aqu est el cdigo HTML:

Ejemplo
<html>
<head>
<script>
function showHint(str) {
if (str.length == 0) {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {

document.getElementById("txtHint").innerHTML = this.responseText
;
}
};
xmlhttp.open("GET", "gethint.asp?q=" + str, true);
xmlhttp.send();
}
}
</script>
</head>
<body>

<p><b>Start typing a name in the input field below:</b></p>


<form>
First name: <input type="text" onkeyup="showHint(this.value)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>
</body>
</html>
Intntalo t mismo "

Cdigo explicacin:

En primer lugar, comprobar si el campo de entrada est vaca (str.length


== 0). Si es as, borrar el contenido del marcador de posicin txtHint y
salir de la funcin.

Sin embargo, si el campo de entrada no est vaca, haga lo siguiente:

Crear un objeto XMLHttpRequest


Cree la funcin a ejecutar cuando la respuesta del servidor est
listo
Enviar la solicitud fuera a un archivo ASP (gethint.asp) en el
servidor
Observe que se agrega gethint.asp parmetro q? Q = "+ str
La variable str mantiene el contenido del campo de entrada

El archivo ASP - "gethint.asp"


El archivo ASP comprueba una serie de nombres, y devuelve el nombre
correspondiente (s) al navegador:

<%
response.expires=-1
dim a(30)
'Fill up array with names
a(1)="Anna"
a(2)="Brittany"
a(3)="Cinderella"
a(4)="Diana"
a(5)="Eva"
a(6)="Fiona"
a(7)="Gunda"
a(8)="Hege"
a(9)="Inga"
a(10)="Johanna"
a(11)="Kitty"
a(12)="Linda"
a(13)="Nina"
a(14)="Ophelia"
a(15)="Petunia"
a(16)="Amanda"
a(17)="Raquel"
a(18)="Cindy"
a(19)="Doris"
a(20)="Eve"
a(21)="Evita"
a(22)="Sunniva"
a(23)="Tove"
a(24)="Unni"
a(25)="Violet"
a(26)="Liza"
a(27)="Elizabeth"
a(28)="Ellen"
a(29)="Wenche"
a(30)="Vicky"

'get the q parameter from URL


q=ucase(request.querystring("q"))

'lookup all hints from array if length of q>0


if len(q)>0 then
hint=""
for i=1 to 30
if q=ucase(mid(a(i),1,len(q))) then
if hint="" then
hint=a(i)
else
hint=hint & " , " & a(i)
end if
end if
next
end if

'Output "no suggestion" if no hint were found


'or output the correct values
if hint="" then
response.write("no suggestion")
else
response.write(hint)
end if
%>

AJAX Base de Datos de Ejemplo


AnteriorSiguiente

AJAX se puede utilizar para la comunicacin interactiva con una base


de datos.

AJAX Base de Datos de Ejemplo


El siguiente ejemplo demostrar cmo una pgina web puede recuperar
informacin de una base de datos con AJAX:

Ejemplo

Customer info will be listed here...

Intntalo t mismo "

Ejemplo Explicacin - El showCustomer)


Funcin (
Cuando un usuario selecciona un cliente en la lista desplegable
anteriormente, una funcin llamada "showCustomer ()" se ejecuta. La
funcin se activa por el evento "onchange":

showCustomer
function showCustomer(str) {
var xhttp;
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {

document.getElementById("txtHint").innerHTML = this.responseText
;
}
};
xhttp.open("GET", "getcustomer.asp?q="+str, true);
xhttp.send();
}

La funcin showCustomer () hace lo siguiente:

Comprobar si se selecciona un cliente


Crear un objeto XMLHttpRequest
Cree la funcin a ejecutar cuando la respuesta del servidor est
listo
Enviar la solicitud fuera a un archivo en el servidor
Ntese que un parmetro (q) se aade a la URL (con el contenido
de la lista desplegable)

El servidor de pgina AJAX


La pgina en el servidor llamado por el cdigo JavaScript anterior es un
archivo ASP llamada "getcustomer.asp".

El archivo de servidor podra ser fcilmente reescrito en PHP, o algunos


otros lenguajes de servidor.

Mira un ejemplo correspondiente en PHP .


El cdigo fuente en "getcustomer.asp" ejecuta una consulta a una base
de datos, y devuelve el resultado en una tabla HTML:

<%
response.expires=-1
sql="SELECT * FROM CUSTOMERS WHERE CUSTOMERID="
sql=sql & "'" & request.querystring("q") & "'"

set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("/datafolder/northwind.mdb"))
set rs=Server.CreateObject("ADODB.recordset")
rs.Open sql,conn

response.write("<table>")
do until rs.EOF
for each x in rs.Fields
response.write("<tr><td><b>" & x.name & "</b></td>")
response.write("<td>" & x.value & "</td></tr>")
next
rs.MoveNext
loop
response.write("</table>")
%>

XML Aplicaciones
AnteriorSiguiente

En este captulo se demuestra algunas aplicaciones HTML usando


XML, HTTP, DOM y JavaScript.

El documento XML
En este captulo vamos a utilizar el archivo XML
llamado "cd_catalog.xml" .
Datos pantalla XML en una tabla HTML
En este ejemplo se coloca a travs de cada elemento <CD>, y muestra
los valores de la <ARTIST> y el <TITLE> elementos en una tabla HTML:

Ejemplo
<html>
<head>
<style>
table, th, td {
border: 1px solid black;
border-collapse:collapse;
}
th, td {
padding: 5px;
}
</style>
</head>
<body>

<table id="demo"></table>

<script>
function loadXMLDoc() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xmlhttp.open("GET", "cd_catalog.xml", true);
xmlhttp.send();
}
function myFunction(xml) {
var i;
var xmlDoc = xml.responseXML;
var table="<tr><th>Artist</th><th>Title</th></tr>";
var x = xmlDoc.getElementsByTagName("CD");
for (i = 0; i <x.length; i++) {
table += "<tr><td>" +

x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue +
"</td><td>" +

x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue +
"</td></tr>";
}
document.getElementById("demo").innerHTML = table;
}
</script>

</body>
</html>
Intntalo t mismo "

Para obtener ms informacin sobre el uso de JavaScript y el DOM XML,


ir a DOM Intro.

Visualizar el primer CD en un div elemento


HTML
Este ejemplo utiliza una funcin para mostrar el primer elemento de CD
en un elemento HTML con id = "showCD":

Ejemplo
displayCD(0);

function displayCD(i) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this, i);
}
};
xmlhttp.open("GET", "cd_catalog.xml", true);
xmlhttp.send();
}

function myFunction(xml, i) {
var xmlDoc = xml.responseXML;
x = xmlDoc.getElementsByTagName("CD");
document.getElementById("showCD").innerHTML =
"Artist: " +

x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue +
"<br>Title: " +

x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue +
"<br>Year: " +
x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue;
}
Intntalo t mismo "

Navegar entre los CDs


Para navegar entre los CDs, en el ejemplo anterior, agregue un lado () y
anterior () funcin:

Ejemplo
function next() {
// display the next CD, unless you are on the last CD
if (i < x.length-1) {
i++;
displayCD(i);
}
}

function previous() {
// display the previous CD, unless you are on the first CD
if (i > 0) {
i--;
displayCD(i);
}
}
Intntalo t mismo "

Mostrar informacin del lbum Al hacer


clic en un CD
El ltimo ejemplo muestra cmo se puede mostrar la informacin del
lbum cuando el usuario hace clic en un CD:

Intntelo usted mismo .


JSON - Introduccin
AnteriorSiguiente

JSON: J ava S cript O bject N flotacin.

JSON es una sintaxis para almacenar e intercambiar datos.

JSON es texto, escrito con notacin de objetos JavaScript.

Intercambio de datos
Al intercambiar datos entre un navegador y un servidor, los datos slo
pueden ser texto.

JSON es texto y que puede convertir cualquier objeto JavaScript en


JSON y JSON enviar al servidor.

Tambin podemos convertir cualquier JSON recibido del servidor en


objetos de JavaScript.

De esta manera se puede trabajar con los datos como objetos de


JavaScript, sin anlisis complicado y traducciones.

Envo de datos
Si tiene datos almacenados en un objeto de JavaScript, se puede
convertir el objeto en JSON, y enviarlo a un servidor:

Ejemplo
var myObj = { "name":"John", "age":31, "city":"New York" };
var myJSON = JSON.stringify(myObj);
window.location = "demo_json.php?x=" + myJSON;

Intntalo t mismo "

Usted aprender ms sobre la funcin JSON.stringify () ms adelante en


este tutorial.
Los datos que recibe
Si recibe datos en formato JSON, puede convertirlo en un objeto de
JavaScript:

Ejemplo
var myJSON = '{ "name":"John", "age":31, "city":"New York" }';
var myObj = JSON.parse(myJSON);
document.getElementById("demo").innerHTML = myObj.name;
Intntalo t mismo "

Usted aprender ms sobre la funcin JSON.parse () ms adelante en


este tutorial.

Almacenamiento de datos
Al almacenar los datos, los datos tienen que ser un formato
determinado, y con independencia de donde se elige para
almacenarlo, el texto es siempre uno de los formatos legales.

JSON hace posible el almacenamiento de objetos JavaScript como texto.

Ejemplo
el almacenamiento de datos en el almacenamiento local

//Storing data:
myObj = { "name":"John", "age":31, "city":"New York" };
myJSON = JSON.stringify(myObj);
localStorage.setItem("testJSON", myJSON);

//Retrieving data:
text = localStorage.getItem("testJSON");
obj = JSON.parse(text);
document.getElementById("demo").innerHTML = obj.name;
Intntalo t mismo "

Qu es JSON?
JSON significa J ava S cript O bject N flotacin
JSON es un formato de intercambio de datos ligera
JSON es "auto-descripcin" y fcil de entender
JSON es independiente del lenguaje *

*
JSON utiliza la sintaxis de JavaScript, pero el formato JSON es slo
texto.
El texto puede ser ledo y utilizado como un formato de datos por
cualquier lenguaje de programacin.

El formato JSON se especific originalmente por Douglas Crockford .

Por qu utilizar JSON?


Dado que el formato JSON es nico texto, que puede ser fcilmente
enviada desde y hacia un servidor, y se utiliza como un formato de datos
por cualquier lenguaje de programacin.

JavaScript ha construido en funcin de convertir una cadena, escrita en


formato JSON, en objetos de JavaScript nativas:

JSON.parse()

Por lo tanto, si recibe datos de un servidor, en formato JSON, que se


puede utilizar como cualquier otro objeto de JavaScript.

JSON sintaxis
AnteriorSiguiente

La sintaxis JSON es un subconjunto de la sintaxis de JavaScript.

Reglas de sintaxis JSON


sintaxis JSON se deriva de la notacin de sintaxis objeto JavaScript:
Los datos estn en pares de nombre / valor
Los datos se separan por comas
Las llaves tienen objetos
corchetes tienen matrices

Los datos JSON - Un nombre y un valor


datos JSON se escribe como pares de nombre / valor.

Un par nombre / valor consiste en un nombre de campo (entre comillas


dobles), seguido de dos puntos, seguido de un valor:

Ejemplo
"name":"John"

nombres JSON requieren comillas dobles. nombres de JavaScript no lo


hacen.

JSON - Evala a Objetos de JavaScript


El formato JSON es casi idntica a objetos JavaScript.

En JSON, claves deben ser cadenas, escritos con comillas dobles:

JSON
{ "name":"John" }

En JavaScript, las claves pueden ser cadenas, nmeros o nombres de los


identificadores:

JavaScript
{ name:"John" }
Los valores JSON
En JSON, los valores deben ser uno de los siguientes tipos de datos:

una cuerda
un nmero
un objeto (objeto JSON)
una matriz
un valor lgico
nulo

En JavaScript valores pueden ser todo lo anterior, adems de cualquier


otra expresin de JavaScript vlida, incluyendo:

Una funcin
una cita
indefinido

En JSON, valores de cadena deben escribirse entre comillas dobles:

JSON
{ "name":"John" }

En JavaScript, puede escribir los valores de cadena con dobles o comillas


simples:

JavaScript
{ name:'John' }

JSON utiliza JavaScript Sintaxis


Debido a que la sintaxis JSON se deriva de notacin de objetos
JavaScript, se necesita muy poco software adicional para trabajar con
JSON en JavaScript.

Con JavaScript se puede crear un objeto y asignar datos a la misma, as:

Ejemplo
var person = { "name":"John", "age":31, "city":"New York" };
Se puede acceder a un objeto JavaScript como esto:

Ejemplo
// returns John
person.name;
Intntalo t mismo "

Tambin se puede acceder de esta manera:

Ejemplo
// returns John
person["name"];
Intntalo t mismo "

Los datos pueden ser modificados de esta manera:

Ejemplo
person.name = "Gilbert";
Intntalo t mismo "

Tambin se puede modificar la siguiente manera:

Ejemplo
person["name"] = "Gilbert";
Intntalo t mismo "

Usted aprender cmo convertir objetos JavaScript en JSON ms


adelante en este tutorial.

Las matrices de JavaScript como JSON


De la misma forma los objetos de JavaScript pueden ser utilizados como
matrices JSON, JavaScript tambin puede ser utilizado como JSON.

Va a aprender ms acerca de las matrices como JSON ms adelante en


este tutorial.

Los archivos JSON


El tipo de archivo para archivos JSON es ".json"
El tipo MIME para el texto JSON es "application / json"

JSON vs XML
AnteriorSiguiente

Tanto JSON y XML se pueden utilizar para recibir datos de un servidor


web.

Los siguientes ejemplos JSON y XML ambos define una empleados


objeto, con una matriz de 3 empleados:

Ejemplo JSON
{"employees":[
{ "firstName":"John", "lastName":"Doe" },
{ "firstName":"Anna", "lastName":"Smith" },
{ "firstName":"Peter", "lastName":"Jones" }
]}

Ejemplo XML
<employees>
<employee>
<firstName>John</firstName> <lastName>Doe</lastName>
</employee>
<employee>
<firstName>Anna</firstName> <lastName>Smith</lastName>
</employee>
<employee>
<firstName>Peter</firstName> <lastName>Jones</lastName>
</employee>
</employees>

JSON es como XML Debido


Tanto JSON y XML son "auto describir" (legible)
Tanto JSON y XML son jerrquicas (valores dentro de los valores)
Tanto JSON y XML pueden ser analizados y utilizados por una gran
cantidad de lenguajes de programacin
Tanto JSON y XML se pueden recuperar con un XMLHttpRequest

A diferencia de JSON es XML Debido


JSON no utiliza etiqueta final
JSON es ms corto
JSON es ms rpido para leer y escribir
JSON puede utilizar matrices

La mayor diferencia es:

XML tiene que ser analizado con un analizador XML. JSON se puede
analizar mediante una funcin de JavaScript estndar.

Por qu es mejor que el JSON XML


XML es mucho ms difcil de analizar que JSON.
JSON se analiza en un objeto JavaScript lista para su uso.

Para aplicaciones AJAX, JSON es ms rpido y ms fcil que XML:

El uso de XML

Fetch un documento XML


Utilizar el DOM XML para recorrer el documento
Los valores de extracto y se guardan en las variables

El uso de JSON

Obtiene una cadena JSON


JSON.parse la cadena JSON

JSON tipos de datos


AnteriorSiguiente
Tipos de datos vlidos
En JSON, los valores deben ser uno de los siguientes tipos de datos:

una cuerda
un nmero
un objeto (objeto JSON)
una matriz
un valor lgico
nulo

JSON valores no pueden ser uno de los siguientes tipos de datos:

Una funcin
una cita
indefinido

JSON Cuerdas
Las cadenas en JSON deben escribirse entre comillas dobles.

Ejemplo
{ "name":"John" }

nmeros JSON
Los nmeros en JSON deben ser un nmero entero o un punto flotante.

Ejemplo
{ "age":30 }

Objetos JSON
Los valores en JSON pueden ser objetos.
Ejemplo
{
"employee":{ "name":"John", "age":30, "city":"New York" }
}

Objetos como valores en JSON deben seguir las mismas reglas que los
objetos JSON.

JSON matrices
Values in JSON can be arrays.

Ejemplo
{
"employees":[ "John", "Anna", "Peter" ]
}

JSON Booleans
Values in JSON can be true/false.

Ejemplo
{ "sale":true }

JSON null
Values in JSON can be null.

Ejemplo
{ "middlename":null }
JSON objetos
AnteriorSiguiente

objeto de sintaxis
Ejemplo
{ "name":"John", "age":30, "car":null }

objetos JSON estn rodeadas por llaves {}.

objetos JSON estn escritos en pares clave / valor.

Las claves deben ser cadenas, y los valores deben ser un tipo de datos
JSON vlido (cadena, nmero, objeto, matriz booleana o null).

Claves y los valores estn separados por dos puntos.

Cada par clave / valor est separado por una coma.

Acceso a valores de objetos


Se puede acceder a los valores de los objetos mediante el uso de la
notacin de punto (.):

Ejemplo
myObj = { "name":"John", "age":30, "car":null };
x = myObj.name;

Intntalo t mismo "

Tambin puede acceder a los valores de los objetos mediante el uso de


la notacin de soporte ([]):

Ejemplo
myObj = { "name":"John", "age":30, "car":null };
x = myObj["name"];
Intntalo t mismo "

Looping un Objeto
Puede bucle a travs de las propiedades del objeto mediante el uso de la
para-en bucle:

Ejemplo
myObj = { "name":"John", "age":30, "car":null };
for (x in myObj) {
document.getElementById("demo").innerHTML += x;
}
Intntalo t mismo "

En un para-en bucle, utilice la notacin soporte de acceso a la


propiedad valores :

Ejemplo
myObj = { "name":"John", "age":30, "car":null };
for (x in myObj) {
document.getElementById("demo").innerHTML += myObj[x];
}
Intntalo t mismo "

Anidada JSON objetos


Los valores en un objeto JSON puede ser otro objeto JSON.

Ejemplo
myObj = {
"name":"John",
"age":30,
"cars": {
"car1":"Ford",
"car2":"BMW",
"car3":"Fiat"
}
}

Se puede acceder a objetos JSON anidadas mediante el uso de la


notacin de puntos o notacin de corchetes:

Ejemplo
x = myObj.cars.car2;
//or:
x = myObj.cars["car2"];
Intntalo t mismo "

modificar Valores
Puede utilizar la notacin de puntos para modificar cualquier valor en un
objeto JSON:

Ejemplo
myObj.cars.car2 = "Mercedes";

Intntalo t mismo "

Tambin puede utilizar la notacin de corchetes para modificar un valor


en un objeto JSON:

Ejemplo
myObj.cars["car2"] = "Mercedes";
Intntalo t mismo "

Eliminar propiedades de los objetos


Usar la palabra clave de borrar para eliminar las propiedades de un
objeto JSON:

Ejemplo
delete myObj.cars.car2;
Intntalo t mismo "
JSON matrices
AnteriorSiguiente

Matrices como objetos JSON


Ejemplo
[ "Ford", "BMW", "Fiat" ]

Las matrices en JSON son casi las mismas que las matrices de
JavaScript.

En JSON, valores de la matriz deben ser de tipo de cadena, nmero,


objeto, matriz booleana o nula .

En JavaScript, valores de la matriz puede ser todo lo anterior, adems


de cualquier otra expresin de JavaScript vlida, incluyendo funciones,
fechas y definido.

Las matrices en JSON objetos


Las matrices pueden ser valores de una propiedad de objeto:

Ejemplo
{
"name":"John",
"age":30,
"cars":[ "Ford", "BMW", "Fiat" ]
}

Acceso a valores de matriz


Se accede a los valores de la matriz utilizando el nmero de ndice:

Ejemplo
x = myObj.cars[0];

Intntalo t mismo "

Bucle a travs de una matriz


Se puede acceder a los valores de la matriz mediante el uso de un bucle
for-in:

Ejemplo
for (i in myObj.cars) {
x += myObj.cars[i];
}
Intntalo t mismo "

O puede utilizar un bucle for:

Ejemplo
for (i = 0; i < myObj.cars.length; i++) {
x += myObj.cars[i];
}
Intntalo t mismo "

Las matrices anidadas en JSON objetos


Valores en una matriz tambin puede ser otra matriz, o incluso otro
objeto JSON:

Ejemplo
myObj = {
"name":"John",
"age":30,
"cars": [

{ "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] },


{ "name":"BMW", "models":[ "320", "X3", "X5" ] },
{ "name":"Fiat", "models":[ "500", "Panda" ] }
]
}

Para acceder a las matrices dentro de las matrices, utilizar un para-en


bucle para cada matriz:

Ejemplo
for (i in myObj.cars) {
x += "<h1>" + myObj.cars[i].name + "</h1>";
for (j in myObj.cars[i].models) {
x += myObj.cars[i].models[j];
}
}

Intntalo t mismo "

Modificar valores de matriz


Utilice el nmero de ndice de modificar una matriz:

Ejemplo
myObj.cars[1] = "Mercedes";
Intntalo t mismo "

Eliminar elementos de matriz


Usar la palabra clave de borrar para eliminar elementos de un array:

Ejemplo
delete myObj.cars[1];
Intntalo t mismo "
JSON .parse ()
AnteriorSiguiente

Un uso comn de JSON es el intercambio de datos a / desde un


servidor web.

Cuando se reciben datos desde un servidor web, los datos siempre es


una cadena.

Analizar los datos con JSON.parse (), y los datos se convierte en un


objeto de JavaScript.

Ejemplo - Analizar JSON


Imaginemos que hemos recibido este texto desde un servidor web:

'{ "name":"John", "age":30, "city":"New York"}'

Utilice la funcin JavaScript JSON.parse () para convertir texto en un


objeto de JavaScript:

var obj = JSON.parse('{ "name":"John", "age":30, "city":"New


York"}');

Asegrese de que el texto est escrito en formato JSON, o de lo


contrario obtendr un error de sintaxis.

Utilice el objeto JavaScript en su pgina:

Ejemplo
<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = obj.name + ", " +
obj.age;
</script>
Intntalo t mismo "
JSON desde el servidor
Puede solicitar JSON desde el servidor mediante el uso de una peticin
AJAX

Siempre y cuando la respuesta del servidor est escrito en formato


JSON, se puede analizar la cadena en un objeto JavaScript.

Ejemplo
Utilice el XMLHttpRequest para obtener datos del servidor:

var xmlhttp = new XMLHttpRequest();


xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj.name;
}
};
xmlhttp.open("GET", "json_demo.txt", true);
xmlhttp.send();
Intntalo t mismo "

Echar un vistazo a json_demo.txt

Matriz como JSON


Cuando se utiliza el JSON.parse () en un JSON derivado de una matriz,
el mtodo devolver una matriz de JavaScript, en lugar de un objeto de
JavaScript.

Ejemplo
El JSON devuelto desde el servidor es una matriz:

var xmlhttp = new XMLHttpRequest();


xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myArr = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myArr[0];
}
};
xmlhttp.open("GET", "json_demo_array.txt", true);
xmlhttp.send();
Intntalo t mismo "

Echar un vistazo a json_demo_array.txt

excepciones
Fechas de anlisis
Fecha objetos no estn permitidos en JSON.

Si es necesario incluir una fecha, escribirlo como una cadena.

Puede convertir de nuevo en un objeto ms adelante:

Ejemplo
Convertir una cadena en una fecha:

var text = '{ "name":"John", "birth":"1986-12-14", "city":"New


York"}';
var obj = JSON.parse(text);
obj.birth = new Date(obj.birth);

document.getElementById("demo").innerHTML = obj.name + ", " +


obj.birth;
Intntalo t mismo "

O bien, puede usar el segundo parmetro, de la funcin JSON.parse (),


llamado resucitador .

El resucitador parmetro es una funcin que comprueba cada propiedad,


antes de devolver el valor.

Ejemplo
Convertir una cadena en una fecha, mediante el resucitador funcin:

var text = '{ "name":"John", "birth":"1986-12-14", "city":"New


York"}';
var obj = JSON.parse(text, function (key, value) {
if (key == "birth") {
return new Date(value);
} else {
return value;
}});

document.getElementById("demo").innerHTML = obj.name + ", " +


obj.birth;
Intntalo t mismo "

Funciones de anlisis
Las funciones no estn permitidos en JSON.

Si es necesario incluir una funcin, debe escribirse como una cadena.

Puede convertir de nuevo en una funcin ms adelante:

Ejemplo
Convertir una cadena en una funcin:

var text = '{ "name":"John", "age":"function () {return 30;}",


"city":"New York"}';
var obj = JSON.parse(text);
obj.age = eval("(" + obj.age + ")");

document.getElementById("demo").innerHTML = obj.name + ",


" + obj.age();
Intntalo t mismo "

Se debe evitar el uso de funciones en JSON, las funciones perdern su


alcance, y que tendra que utilizar eval () para convertir de nuevo en
funciones.

Soporte del navegador


La funcin JSON.parse () se incluye en todos los principales navegadores
y en el ltimo estndar ECMAScript (JavaScript):

Web Browsers Support

Firefox 3.5
Internet Explorer 8
Chrome
Opera 10
Safari 4

Para los navegadores ms antiguos, una biblioteca JavaScript est


disponible enhttps://github.com/douglascrockford/JSON-js .

JSON .stringify ()
AnteriorSiguiente

Un uso comn de JSON es el intercambio de datos a / desde un


servidor web.

Al enviar datos a un servidor web, los datos tienen que ser una
cadena.

Convertir un objeto de JavaScript a una cadena con JSON.stringify ().

Stringify un objeto JavaScript


Imaginemos que tenemos este objeto en JavaScript:

var obj = { "name":"John", "age":30, "city":"New York"};

Utilice la funcin de JavaScript JSON.stringify () para convertirlo en una


cadena.

var myJSON = JSON.stringify(obj);

El resultado ser una cadena siguiendo la notacin JSON.

myJSON es ahora una cadena, y listo para ser enviado a un servidor:

Ejemplo
var obj = { "name":"John", "age":30, "city":"New York"};
var myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;
Intntalo t mismo "
Usted aprender cmo enviar JSON para el servidor en el siguiente
captulo.

Stringify una matriz de JavaScript


Tambin es posible stringify matrices de JavaScript:

Imaginemos que tenemos esta matriz en JavaScript:

var arr = [ "John", "Peter", "Sally", "Jane" ];

Utilice la funcin de JavaScript JSON.stringify () para convertirlo en una


cadena.

var myJSON = JSON.stringify(arr);

El resultado ser una cadena siguiendo la notacin JSON.

myJSON es ahora una cadena, y listo para ser enviado a un servidor:

Ejemplo
var arr = [ "John", "Peter", "Sally", "Jane" ];
var myJSON = JSON.stringify(arr);
document.getElementById("demo").innerHTML = myJSON;
Intntalo t mismo "

Usted aprender cmo enviar JSON para el servidor en el siguiente


captulo.

excepciones
Fechas stringify
En JSON, los objetos de fecha no estn permitidos. La funcin
JSON.stringify () convertir cualquier fecha en cadenas.

Ejemplo
var obj = { "name":"John", "today":new Date(), "city":"New
York"};
var myJSON = JSON.stringify(obj);

document.getElementById("demo").innerHTML = myJSON;
Intntalo t mismo "

Puede convertir la cadena de nuevo en un objeto de fecha en el


receptor.

Funciones stringify
En JSON, funciones no estn permitidos como valores de objeto.

La funcin JSON.stringify () eliminar cualquier funcin de un objeto de


JavaScript, tanto la clave y el valor:

Ejemplo
var obj = { "name":"John", "age":function ()
{return 30;}, "city":"New York"};
var myJSON = JSON.stringify(obj);

document.getElementById("demo").innerHTML = myJSON;
Intntalo t mismo "

Esto puede ser omitido si convierte sus funciones en cadenas antes de


ejecutar la funcin JSON.stringify ().

Ejemplo
var obj = { "name":"John", "age":function ()
{return 30;}, "city":"New York"};
obj.age = obj.age.toString();
var myJSON = JSON.stringify(obj);

document.getElementById("demo").innerHTML = myJSON;
Intntalo t mismo "

Se debe evitar el uso de funciones en JSON, las funciones perdern su


alcance, y que tendra que utilizar eval () para convertir de nuevo en
funciones.
Soporte del navegador
La funcin JSON.stringify () se incluye en todos los principales
navegadores y en el ltimo estndar ECMAScript (JavaScript):

Web Browsers Support

Firefox 3.5
Internet Explorer 8
Chrome
Opera 10
Safari 4

JSON PHP
AnteriorSiguiente

Un uso comn de JSON es para leer datos desde un servidor web, y


mostrar los datos en una pgina web.

Este captulo le ensear cmo intercambiar datos JSON entre el


cliente y el servidor PHP.

El archivo PHP
PHP tiene algunas funciones integradas para manejar JSON.

Los objetos en PHP se pueden convertir en JSON usando la funcin de


PHP json_encode () :

archivo PHP
<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";

$myJSON = json_encode($myObj);
echo $myJSON;
?>
Mostrar archivo PHP

El JavaScript de cliente
Aqu es un cdigo JavaScript en el cliente mediante una llamada AJAX
para solicitar el archivo PHP en el ejemplo anterior:

Ejemplo
Utilice JSON.parse () para convertir el resultado en un objeto de
JavaScript:

var xmlhttp = new XMLHttpRequest();


xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj.name;
}
};
xmlhttp.open("GET", "demo_file.php", true);
xmlhttp.send();
Intntalo t mismo "

matriz PHP
Las matrices en PHP tambin se convertirn en JSON al utilizar la
funcin PHP json_encode () :

archivo PHP
<?php
$myArr = array("John", "Mary", "Peter", "Sally");

$myJSON = json_encode($myArr);

echo $myJSON;
?>
Mostrar archivo PHP
El JavaScript de cliente
Aqu es un cdigo JavaScript en el cliente mediante una llamada AJAX
para solicitar el archivo PHP desde la matriz de ejemplo anterior:

Ejemplo
Utilice JSON.parse () para convertir el resultado en una matriz de
JavaScript:

var xmlhttp = new XMLHttpRequest();


xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj[2];
}
};
xmlhttp.open("GET", "demo_file_array.php", true);
xmlhttp.send();
Intntalo t mismo "

Base de datos de PHP


PHP es un lenguaje de programacin del lado del servidor, y se debe
utilizar para las operaciones que slo pueden ser realizadas por un
servidor, al igual que el acceso a una base de datos.

Imagine que tiene una base de datos en el servidor, que contiene los
clientes, productos y proveedores.

Quieres hacer una solicitud al servidor en el que solicita los primeros 10


registros de la tabla "clientes":

Ejemplo
Utilice JSON.stringify () para convertir el objeto JavaScript en JSON:

obj = { "table":"customers", "limit":10 };


dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {

document.getElementById("demo").innerHTML = this.responseText;
}
};
xmlhttp.open("GET", "json_demo_db.php?x=" + dbParam, true);
xmlhttp.send();
Intntalo t mismo "

Ejemplo explic:
Definir un objeto que contiene una propiedad de mesa y una
propiedad lmite.
Convertir el objeto en una cadena JSON.
Enviar una solicitud al archivo PHP, con la cadena JSON como
parmetro.
Espere hasta que la solicitud devuelve con el resultado (como
JSON)
Mostrar el resultado recibido del archivo PHP.

Echar un vistazo al archivo PHP:

archivo PHP
<?php
header("Content-Type: application/json; charset=UTF-8");
$obj = json_decode($_GET["x"], false);

$conn
= new mysqli("myServer", "myUser", "myPassword", "Northwind");
$result = $conn->query("SELECT name FROM ".$obj->table." LIMIT
".$obj->limit);
$outp = array();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>

PHP File explic:


Convertir la solicitud en objeto, usando la funcin de
PHP json_decode () .
Acceder a la base de datos, y llenar una matriz con los datos
solicitados.
Aadir la matriz a un objeto, y devolver el objeto como JSON
usando el json_encode () funcin.

A travs del bucle de Resultado


Convertir el resultado recibido del archivo PHP en un objeto JavaScript, o
en este caso, una matriz de JavaScript:

Ejemplo
Utilice JSON.parse () para convertir el JSON en un objeto de JavaScript:

...
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
for (x in myObj) {
txt += myObj[x].name + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
};
...
Intntalo t mismo "

PHP method = post


Al enviar datos al servidor, a menudo es mejor utilizar el mtodo HTTP
POST.

Para enviar peticiones AJAX utilizando el mtodo POST, especificar el


mtodo, y la cabecera correcta.

Los datos enviados al servidor deben ahora ser un argumento para el


mtodo .send ():

Ejemplo
obj = { "table":"customers", "limit":10 };
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
for (x in myObj) {
txt += myObj[x].name + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
};
xmlhttp.open("POST", "json_demo_db_post.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-
form-urlencoded");
xmlhttp.send("x=" + dbParam);
Intntalo t mismo "

La nica diferencia en el archivo PHP es el mtodo para obtener los


datos transferidos.

archivo PHP
Usar $ _POST en lugar de $ _GET:

<?php
header("Content-Type: application/json; charset=UTF-8");
$obj = json_decode($_POST["x"], false);

$conn
= new mysqli("myServer", "myUser", "myPassword", "Northwind");
$result = $conn->query("SELECT name FROM ".$obj->table." LIMIT
".$obj->limit);
$outp = array();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>

JSON HTML
AnteriorNext

JSON can very easily be translated into JavaScript.

JavaScript puede ser utilizado para hacer HTML en sus pginas web.

HTML Table
Hacer una tabla HTML con los datos recibidos como JSON:
Ejemplo
obj = { "table":"customers", "limit":20 };
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
txt += "<table border='1'>"
for (x in myObj) {
txt += "<tr><td>" + myObj[x].name + "</td></tr>";
}
txt += "</table>"
document.getElementById("demo").innerHTML = txt;
}
}
xmlhttp.open("POST", "json_demo_db_post.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-
form-urlencoded");
xmlhttp.send("x=" + dbParam);
Intntalo t mismo "

Dynamic HTML Table


Hacer la tabla HTML basado en el valor de un men
desplegable:

Ejemplo
<select id="myselect" onchange="change_myselect(this.value)">
<option value="">Choose an option:</option>
<option value="customers">Customers</option>
<option value="products">Products</option>
<option value="suppliers">Suppliers</option>
</select>

<script>
function change_myselect(sel) {
var obj, dbParam, xmlhttp, myObj, x, txt = "";
obj = { "table":sel, "limit":20 };
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
txt += "<table border='1'>"
for (x in myObj) {
txt += "<tr><td>" +
myObj[x].name + "</td></tr>";
}
txt += "</table>"
document.getElementById("demo").innerHTML = txt;
}
};
xmlhttp.open("POST", "json_demo_db_post.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-
form-urlencoded");
xmlhttp.send("x=" + dbParam);
}
</script>
Intntalo t mismo "

HTML Lista Desplegable


Crea un HTML lista desplegable con los datos recibidos como JSON:

Ejemplo
obj = { "table":"customers", "limit":20 };
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
txt += "<select>"
for (x in myObj) {
txt += "<option>" + myObj[x].name;
}
txt += "</select>"
document.getElementById("demo").innerHTML = txt;
}
}
xmlhttp.open("POST", "json_demo_db_post.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-
form-urlencoded");
xmlhttp.send("x=" + dbParam);
Intntalo t mismo "
JSONP
AnteriorSiguiente

JSONP es un mtodo para enviar datos JSON sin tener que


preocuparse acerca de los problemas entre dominios.

JSONP no utiliza el objeto XMLHttpRequest.

JSONP utiliza la etiqueta <script> en su lugar.

JSONP Intro
JSONP significa JSON con el acolchado.

Solicitar un archivo de otro dominio puede causar problemas, debido a la


poltica de varios dominios.

La solicitud de una externa de la escritura de otro dominio no tiene este


problema.

JSONP utiliza esta ventaja, y archivos de solicitud de uso de la etiqueta


del guin en lugar del objeto XMLHttpRequest.

<script src="demo_jsonp.php">

El servidor de archivos
El archivo en el servidor justifica el resultado dentro de una llamada de
funcin:

Ejemplo
<?php
$myJSON = '{ "name":"John", "age":30, "city":"New York" }';

echo "myFunc(".$myJSON.");";
?>
Mostrar archivo PHP

El resultado devuelve una llamada a una funcin llamada "myFunc" con


los datos JSON como un parmetro.
Asegrese de que la funcin existe en el cliente.

La funcin JavaScript
La funcin denominada "myFunc" se encuentra en el cliente, y listo para
manejar los datos JSON:

Ejemplo
function myFunc(myObj) {
document.getElementById("demo").innerHTML = myObj.name;
}
Intntalo t mismo "

La creacin de una etiqueta de script


dinmico
El ejemplo anterior se ejecutar la funcin "myFunc" cuando la pgina se
carga, en funcin de dnde se pone la etiqueta de script, que no es muy
satisfactorio.

La etiqueta de script slo se debe crear cuando sea necesario:

Ejemplo
Crear e insertar la etiqueta <script> cuando se hace clic en un botn:

function clickButton() {
var s = document.createElement("script");
s.src = "demo_jsonp.php";
document.body.appendChild(s);
}
Intntalo t mismo "

Resultado dinmica JSONP


Los ejemplos anteriores son todava muy esttica.
Hacer que el ejemplo dinmico mediante el envo de JSON para el
archivo php, y dejar que el archivo PHP devuelve un objeto JSON con
base en la informacin que recibe.

archivo PHP
<?php
header("Content-Type: application/json; charset=UTF-8");
$obj = json_decode($_GET["x"], false);

$conn
= new mysqli("myServer", "myUser", "myPassword", "Northwind");
$result = $conn->query("SELECT name FROM ".$obj->$table." LIMIT
".$obj->$limit);
$outp = array();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo "myFunc(".json_encode($outp).")";
?>

PHP File explic:


Convertir la solicitud en objeto, usando la funcin de
PHP json_decode () .
Acceder a la base de datos, y llenar una matriz con los datos
solicitados.
Aadir la matriz a un objeto.
Convertir la matriz en JSON usando el json_encode () funcin.
Envolver "myFunc ()" alrededor del objeto de devolucin.

Ejemplo JavaScript
La funcin "myFunc" se llama desde el archivo php:

function clickButton() {
var obj, s
obj = { "table":"products", "limit":10 };
s = document.createElement("script");
s.src = "jsonp_demo_db.php?x=" + JSON.stringify(obj);
document.body.appendChild(s);
}
function myFunc(myObj) {
var x, txt = "";
for (x in myObj) {
txt += myObj[x].name + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
Intntalo t mismo "

Funcin de devolucin de llamada


Cuando se tiene ningn control sobre el archivo del servidor, cmo
obtener el archivo del servidor para llamar a la funcin correcta?

A veces el archivo del servidor ofrece una funcin de devolucin de


llamada como parmetro:

Ejemplo
El archivo PHP llamar a la funcin se pasa como un parmetro de
devolucin de llamada:

function clickButton() {
var s = document.createElement("script");
s.src = "jsonp_demo_db.php?callback=myDisplayFunction";
document.body.appendChild(s);
}

Intntalo t mismo "

You might also like