Función #Fibonacci en #javascript

La secuencia de fibonacci es un algoritmo tipico que vemos todos los ingenieros de computación (o ciencia a fin), mientras estamos cursando nuestra carrera.

Esta Sucesión es muy simple de comprender, simplemente comienza por el número 0 seguido del 1, y a partir de estos se suma cada numero con el anterior y se agrega a la secuencia, y repetimos la operación; un ejemplo es el siguiente:

0,1,1,2,3,5,8,13…..

Lo interesante es que esta función se representa en muchos casos en la naturaleza, desde la perfección de un caracol, hasta en la reproducción de los conejos; gran ejemplo que nos hace pensar que la naturaleza es un gran matemático.

Les adjunto el código de javascript para realizar esta famosa secuencia a continuación:

function fibonacci(n){
var a=0;
var b=1;

for(i=0; i<n;i++){
var numeroTemporal=a;
a=b;
b=numeroTemporal+b;

document.writeln(a+" ");
}

}

Esta función recibe un número, el cual sera la cantidad de elementos que plasmara la función. Si desean ver en acción la función les anexo el código corriendo el cual plasma los primeros 100 números de la secuencia, solo den clic en el botón de abajo:

4.- La función CSS – Curso Básico de #Jquery #4

Una de las cosas que más deseamos en nuestros sitios web, es poder modificar los valores visuales de los elementos DOM (elementos HTML), para crear animación, o efectos que le dan más estética a nuestro sitio, y para ello necesitamos manipular las propiedades de nuestra hoja de estilo, para este tipo de cosas jquery nos ofrece la función (método) de nombre css().

Para poder utilizarla, debemos utilizar el selector sobre el o los elementos que deseamos modificar sus propiedades de estilo, seguido de esta función. Esta función se puede utilizar de distintas formas, y comenzaremos por la forma más simple, obtener un valor en específico de un atributo de estilo, y es de la siguiente manera:

Código HTML

<img id="imagen" src="https://hdeleon.net/wp-content/uploads/2014/01/cropped-cropped-logo1.jpg" style='width:800px;height:120px'  />

Código Jquery

alert($('#imagen').css('width'));
//obtenemos en un alert el width de nuestra imagen

En este ejemplo podemos observar en una ventana alert, el ancho de nuestra imagen, ahora veamos como manipular la imagen con el siguiente código:

Código HTML

<img id="imagen" src="https://hdeleon.net/wp-content/uploads/2014/01/cropped-cropped-logo1.jpg" style='width:800px;height:120px'  />

<input type="button" value="aumentar tamaño imagen" onclick="aumentaTamano();" />

Código Jquery

function aumentaTamano(){
//obtenemos el viejo tamaño de ancho y alto
tamanoWidth=$('#imagen').css('width')
tamanoHeight=$('#imagen').css('height')

//aumentamos el tamaño obtenido mas 10 pixeles
tamanoWidth=parseInt(tamanoWidth)+parseInt(10);
tamanoHeight=parseInt(tamanoHeight)+parseInt(10);

//asignamos el nuevo tamaño
$('#imagen').css('width',tamanoWidth)
$('#imagen').css('height',tamanoHeight)
}

En este código vemos como utilizar la función para asignar un nuevo valor a las propiedades, invocando la función aumentaTamano(), la cual ejecuta al presionar el botón (<input>), otorgamos un nuevo ancho y un nuevo alto y lo asignamos a través de la función css(), recibiendo esta como argumento el nombre de la propiedad de estilo y el nuevo valor, pero aun así hay una manera más fácil de hacerlo; la función css() nos permite mandar varios valores a varias propiedades de estilo, recibiendo los atributos por el formato json; para los que no sepan que es json, simplemente es un formato que se utiliza en los lenguajes de programación para enviarse mensaje entre ellos (como lo venía haciendo el formato xml), jquery aprovecha esta característica, y también puede recibir sus atributos en este formato, facilitando poder enviar todo lo que deseamos modificar en la misma línea, como podemos ver a continuación.

Nota: Por si no conocen la función parseInt() de javascript, esta función convierte el valor de la variable a entero, si yo no utilizo esta función lo que obtendríamos al utilizar el operador «+» seria una concatenación, no una suma.

Código HTML

<img id="imagen" src="https://hdeleon.net/wp-content/uploads/2014/01/cropped-cropped-logo1.jpg" style='width:800px;height:120px'  />

<input type="button" value="disminuye tamaño imagen" onclick="disminuyeTamano();" />

Código Jquery

function disminuyeTamano(){
//obtenemos el viejo tamaño de ancho y alto
tamanoWidth=$('#imagen').css('width')
tamanoHeight=$('#imagen').css('height')

//aumentamos el tamaño obtenido mas 10 pixeles
tamanoWidth=parseInt(tamanoWidth)-parseInt(10);
tamanoHeight=parseInt(tamanoHeight)-parseInt(10);

//aplicamos los dos cambios en la misma linea, utilizando json
$('#imagen').css({'height':tamanoHeight,
'width':tamanoWidth})

}

En lugar de invocar dos veces la función css(), mando los dos atributos en la misma función utilizando json, y dentro de esta funcion se encuentra el formato json «{‘height’:tamanoHeight,’width’:tamanoWidth}», poniendo las llaves de abertura y cerradora «{}» y dentro de estas los atributos en comillas (o sin ellas, en el caso de los atributos no los valores), seguido de dos puntos «:» que equivalen al igual (=) y separando cada atributo por coma.

Si desean ver este código en ejecución den clic aquí.

Ir al Capitulo Siguiente (5.- La función Each).

Ir al  Capitulo Anterior (3.- Atributos).

3.- Atributos – Curso Básico de #Jquery #3

Las funciones de jquery o métodos de jquery nos sirven para realizar manipulación de los atributos de los elementos DOM (elementos HTML), animaciones, agregar eventos y muchas otras cosas; en este capítulo nos enfocaremos a las funciones que sirven para modificar los atributos de los elementos DOM.

Para poder utilizar las funciones, basta con utilizar los selectores (que vimos en el capitulo anterior), seguido de un punto y el nombre de la función, por ejemplo:

Código HTML

<input type="text" value="un valor" id="txtTexto" />

Código Jquery

var valorDeCajaDeTexto=$("#txtTexto").val();
alert(valorDeCajaDeTexto)

//Nos mostraría "un valor" en el alert

En el ejemplo anterior utilizamos la función de nombre val(), la cual nos regresa el valor que tiene un elemento DOM en su atributo value. Pero qué pasa cuando no deseamos obtener el atributo value, por ejemplo obtener la liga a la que apunta un elemento link (<a> anchor), para ello utilizamos la función de nombre prop(), la cual se puede utilizar de dos formas, tanto para obtener el valor, como para otorgar el valor, en el ejemplo siguiente vemos como obtener el valor:

Código HTML

<a id="liga" href="www.google.com">ir a una pagina</a>

Código Jquery

alert($("#liga").prop("href"))

//Nos muestra www.google.com en un alert

Y si deseamos utilizar la misma función pero para otorgar un valor es de la siguiente manera:

$("#liga").prop("href","www.hdeleon.net")
//cambia la liga del link a www.hdeleon.net

Ahora vamos a ver una función con la cual podemos obtener el contenido HTML de un elemento, es decir, el contenido que contiene dentro de él (claro que no aplica con elementos input o elementos imágenes (<img>)  por el hecho que no tienen elementos HTML dentro), vamos a utilizar la función html(), igual que prop() esta función sirve para obtener y asignar un valor, solo que esta sirve para el contenido HTML, (tal como lo hace innerHTML de javascript); a continuación veamos un ejemplo:

Código HTML

<div id="contenido">
<ul>
<li>un elemento</li>
<li>un elemento</li>
<li>un elemento</li>
<li>un elemento</li>
<li>un elemento</li>
</ul>
</div>

Código Jquery

obtenemosHTML=$("#contenido").html();
alert(obtenemosHTML)

//El alert muestra el contenido del div con el id "contenido"

Por último, gracias a los selectores de jquery, podemos realizar una función a varios elementos, supongamos que deseamos poner un value a todos los inputs de nuestra pagina, simplemente lo haríamos de la siguiente manera.

Código HTML

<input type="text" value="un valor" id="txtTexto" />
<input type="text" value="un valor" id="txtTexto2" />
<input type="text" value="un valor" id="txtTexto3" />
<input type="text" value="un valor" id="txtTexto4" />

Código Jquery

$("input").prop("value","valor a todos los input")

En este capítulo vimos algunas de las funciones de jquery para manipular los atributos de los elementos DOM; existen algunas otras funciones que pueden ver en la siguiente liga y sin duda después de leer este capítulo, no tendrán ninguna dificultad en entender su funcionamiento.

Ir al Capitulo Siguiente (4.- La función Css).

Ir al  Capitulo Anterior (2.- Selectores).

2.- Selectores – Curso Básico de #Jquery #2

Los selectores en jquery son la herramienta que utilizaremos para seleccionar los elementos HTML a los cuales deseamos obtener o asignar alguna funcionalidad.

Para todos aquellos que ya saben utiliza CSS y como se le asigna un estilo a los elementos, ese tipo de selector es el mismo que se utiliza en jquery, pero para aquellos que no saben CSS, explicare brevemente como seleccionar elementos.

Para seleccionar los elementos de nuestra página HTML, podemos seleccionarlo ya sea por el nombre del tag (<input>, <table>, <a>, etc), la clase  (clase CSS) de los elementos, o por su id (atributo HTML), y basta con hacerlo de la siguiente manera:

//seleccionamos los inputs
inputs=$("input");

//seleccionamos los elementos de clase azul
claseAzul=$(".azul");

//seleccionamos el elemento de id idElemento
idElemento= $("#idElemento")

La primera línea selecciona todos los elementos tipo input(<input>) de nuestra página.

La  segunda línea selecciona todos los elementos que contienen la clase azul (clase CSS).

La tercer línea selecciona el elemento el cual tiene un id de nombre “idElemento”. Esta manera de utilizar el selector solo sirve para seleccionar un elemento, ya que por estándar solo debemos utilizar un id único y no puede repetirse en otro elemento.

De esta manera se utilizan los selectores y lo que sigue a esto es aplicar todas las funciones de jquery, que veremos en los siguientes capítulos.

Si deseas más información sobre selectores, visita mi artículo que escribí hace un tiempo de nombre: tutorial básico de selectores de jquery.

Ir al Capitulo Siguiente (3.- Atributos).

Ir al  Capitulo Anterior (1.- Introducción e Instalación de Jquery).

1.- Introducción e Instalación de Jquery. – Curso Básico de #Jquery #1

Para comenzar este tutorial, si no sabes nada de javascript te recomiendo te pases por el curso básico de javascript que realice, esto servirá para que puedas comprender mejor todo lo que veremos en este curso.

Introducción

Hablar de jquery hoy en día es hablar de ajax, pero más allá de la funcionalidad que tiene para las peticiones ajax, existe otro fin con el cual trabaja esta grandiosa librería y es la manipulación de elementos DOM. La manipulación de dichos objetos viene desde realizar sus funcionalidades por medio de eventos hasta realizar animaciones y efectos para hacer que nuestras páginas tengan estética y elegancia.

Jquery es la librería de javascript mas utilizada en el mundo (si no me creen den clic aquí), fue hecha por  John Resig y presentada el año 2006, y siendo la librería más utilizada, hay mucho material afuera con el cual se pueden abastecer para realizar cosas, entonces ¿por que nace este curso?, la mayoría del material es para personas que ya tienen nociones de programación avanzadas, o el material se encuentra en ingles, es por ello que realizo este curso básico, pensado en todas esas personas con el deseo de aprender y no tengan el conocimiento en ingles suficiente.

Instalación

Comenzaremos con la instalación de jquery, y para ello seguiremos los pasos siguientes:

  1. Entraremos a la página oficial de jquery dando clic al siguiente enlace www.jquery.com
  2. Descargamos la versión actual de Jquery, es fácil encontrar el botón de descarga, siempre es gigante y esta visible. Basta con dar clic y seleccionar una versión de la librería, ya sea comprimida o ya sea descomprimida, recomiendo descarga la comprimida (compressed), ya que pesa menos. Puede pasar que al dar clic en lugar de descargarse se abra en su navegador y se vea el código como tal, en tal caso lo copean y lo pegan en notepad y lo guardan con extensión de javascript (jquery.js)
  3. Una vez descargada la librería (que es un archivo con extensión js) la pueden pegar en el proyecto que la utilizaran en el lugar que deseen, para hacer una prueba a continuación yo recomiendo que antes creen un archivo con extensión html (miarchivo.html) y en la misma carpeta copien jquery, para que así puedan hacer una prueba (claro si es la primer vez que descargan jquery).
  4. Ahora solo basta con realizar la referencia a dicha librería desde su archivo con extensión html de la siguiente manera:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<!-- asi hacemos referencia a jquery siempre y cuando se encuentre en la misma ubicación que este archivo -->
<script src="jquery.js"></script>

</head>

<body>
</body>
</html>

Y así de fácil se instala jquery, ahora ya podemos hacer uso de su funcionalidad, cabe resaltar que debe tener la referencia en todas las paginas en la cual necesitemos de él, así que deben agregar la referencia en todas para así poder utilizarlo. Para verificar que lo instalamos bien podemos copiar el siguiente código y correrlo en un navegador:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<!-- asi hacemos referencia a jquery siempre y cuando se encuentre en la misma ubicación que este archivo -->
<script src="jquery.js"></script>

</head>

<body>

<!-- un div para poder usar jquery y ver su contenido -->
<div>Un contenido bien bonito en este div</div>

</body>
</html>

<script>
//codigo de jquery para verificar que este instalado bien

alert($("div").html())
</script>

Si nos muestra en una ventana alert() el mensaje «Un contenido bien bonito en este div«, jquery se instalo con éxito. Por el momento no importa que no entendamos lo que está dentro de la función alert(), en los siguientes capítulos explicare con detalle de que trata esa sintaxis.

Ir Capítulo Siguiente (2.- Selectores)

Curso Básico de Jquery

Este curso esta creado para todo aquel que inicie con jquery y no sepa como comenzar, que es, como instalarlo, en breves palabras, para dar sus primeros pasos en este grandioso framework.

El curso constara de 10 capítulos en los cuales iremos desde la instalación, hasta la manipulación de objetos dinámicamente. Cabe destacar que el curso esta hecho para principiantes o novatos, y por si estas aquí y no sabes ni siquiera javascript, te sugiero te des una vuelta por mi curso básico de javascript y terminando de leerlo vuelvas aquí, esta sugerencia te ayudara para poder comprender como nos ayuda jquery para la manipulación de los elementos HTML.

Antes de iniciar resalto, que en este curso no se vera ajax (para eso estoy haciendo otro curso especializado en eso), solo contemplaremos la manipulación de elementos HTML.

El curso esta conformado en los siguientes 10 capítulos:

1.- Introducción e Instalación de Jquery

2.- Selectores

3.- Atributos

4.- La función Css

5.- La función Each

6.- Eventos

7.- Las funciones Show y Hide

8.- Callbacks

9.- La función Animate

10.- Creación de Elementos HTML con jquery

 

10.- Creación de Elementos HTML con Javascript. – Curso Básico de #Javascript #10

Este es el ultimo capitulo del curso básico de javascript, y para festejar que después de 9 capítulos ya somos principiantes con javascript, realizaremos un ejercicio que prometo les servirá en su vida diaria como desarrolladores, vamos a crear objetos HTML desde javascript, y para comprender la creación de objetos dinámicos, crearemos un formulario detalle. Si te preguntas que diablos es un formulario detalle, simplemente imagina cuando vas al súper mercado a comprar productos, y en la caja registradora mientras agregan los productos estos van agregándose a una tabla, pues eso es un formulario Maestro Detalle, pero nos enfocaremos solamente en el Formulario Detalle que prácticamente es lo difícil del asunto.

A continuación esta el ejemplo del formulario con el cual pueden jugar y ejecutarlo para que vean de que se trata:

Ahora vamos a lo divertido, como hacerlo. Para comenzar veamos el código HTML que es el siguiente:

<div id="tutorial">
<div >
<div class="bloque">
<label>Código</label>
<input type="text" id="txtCodigo" value="" />
</div>
<div class="bloque">
<label>Nombre</label>
<input type="text" id="txtNombre" value="" />
</div>
<div class="bloque">
<label>Precio</label>
<input type="text" id="txtPrecio" value="" />
</div>
<div class="bloque">
<input value="Agregar" type="button" onclick="Agrega()" />
</div>
<div style="clear:both"></div>
</div>

<div>
<table style="width:400px;" id="tablaProductos">
<tr>
<th>Código</th>
<th>Nombre</th>
<th>Precio</th>
<th>X</th>
</tr>
</table>
</div>
</div>

Tenemos dos partes encerradas en dos divs(<div>), una es la que contiene los input para la captura del detalle y un botón de agregar que ejecuta una función javascript de nombre Agregar(), y tenemos 3 input de tipo text, en los cuales introduciremos valores.

En la segunda parte tenemos una tabla de id tablaProductos, y con unos encabezados relacionados a nuestras cajas de texto, y es fácil intuir que en esta tabla es donde agregaremos las filas de nuestros productos.

Ahora veamos la función Agregar antes mencionada:

function Agrega(){

//obtenemos los valores de nuestra caja de texto
var codigo=document.getElementById("txtCodigo").value;
var nombre=document.getElementById("txtNombre").value;
var precio=document.getElementById("txtPrecio").value;

//creamos un objeto tr que anexaremos a nuestra tabla llamada tableProductos
var TR= document.createElement("tr");

//creamos 4 elementos td en donde iran los datos y uno cuarto donde ira un boton para eliminar
var TD1=document.createElement("td")
var TD2=document.createElement("td")
var TD3=document.createElement("td");
var TD4= document.createElement("td")

//asignamos los valores a nuestros td por medio del atributo innerHTML, el cual tiene el contenido HTML de un Nodo
TD1.innerHTML=codigo;
TD2.innerHTML=nombre;
TD3.innerHTML=precio;

//A continuación asignamos contenido html a nuestro cuarto td
//esta es una forma de crear elementos tambien, dando el codigo html a un Nodo
TD4.innerHTML="&lt;input type='button' value='Eliminar' onclick='Elimina(this)'&gt;"

//Ahora proseguimos a agregar los hijos TD al Padre TR
//Esta es otra manera de crear elementos HTML, por medio de el metodo appendChild
TR.appendChild(TD1);
TR.appendChild(TD2);
TR.appendChild(TD3);
TR.appendChild(TD4);

//Por ultimo asignamos nuestro TR a la tabla con id tablaProductos
document.getElementById("tablaProductos").appendChild(TR)

//limpiamos nuestros inputs para agregar ma datos, y ponemos el foco nuevamente en el input de codigo
document.getElementById("txtCodigo").value=""
document.getElementById("txtNombre").value="";
document.getElementById("txtPrecio").value="";
document.getElementById("txtCodigo").focus();
}

En la función anterior, esta comentada linea por linea a detalle, pero yo resumo breve mente a continuación:

  1. Obtenemos los valores de las cajas de texto y los guardamos en variables.
  2. Después creamos un Nodo tipo TR al cual asignaremos nuevos TD donde estarán nuestros valores.
  3. En seguida creamos 4 TDs, a los tres primeros TDs le asignamos nuestros valores, y al cuarto le asignamos en su atributo innerHTML un botón en código HTML, esta es una manera de crear Elementos HTML; tengamos cuidado y veamos que en el código de nuestro botón invocamos una función en el onclick, la cual tiene nombre Eliminar() (veremos su código más adelante), esta función le enviamos el mismo Nodo botón con la palabra this.
  4. A continuación observamos otra manera la cual es utilizando el método appendChild, con este método agregamos los TDs al TR.
  5. Luego agregamos de la misma manera con el método appendChild el nuevo TR a la tabla de id tablaProductos.
  6. Por último limpiamos las cajas de texto y ponemos el foco con la función focus() de javascript en la primer caja de texto.

Ahora veamos el código de la función Eliminar que invoca el botón que creamos dinámicamente en el código anterior.

function Elimina(NodoBoton){

//recibimos el boton como parametro, obtendremos el tr que lo contiene de la siguiente manera
//Como nuestro boton es hijo de un td, y este td de el tr, debemos invocar dos veces parentNode
//Esto para llegar a tener el TR
var TR= NodoBoton.parentNode.parentNode;

//ahora que ya tenemos el padre TR, podemos eliminarlo de la siguiente manera
//junto a todos sus hijos

document.getElementById("tablaProductos").removeChild(TR);
}

Esta funcion simplemente recibe el botón mismo que la invoco como parámetro, recordemos que enviamos el botón con la palabra this; y ya teniendo este botón por medio de el atributo parentNode obtenemos su padre que es el TD que lo contiene, y nuevamente por el atributo parentNode ahora obtenemos el TR, el padre de los elementos que agregamos dinámicamente, ahora con la función removeChild, mandamos el TR haciendo referencia a la tabla de productos por medio de su id (tablaProductos), y con eso es suficiente para eliminar la fila del producto deseado.

Este es el capítulo final de este pequeño curso básico de javascript, espero le saquen provecho y valga la pena el haberlo hecho.

Ir Capítulo Anterior (9.- Modificación de elementos HTML con Javascript)

9.- Modificación de elementos HTML con Javascript. – Curso Básico de #Javascript #9

En este capítulo y el siguiente, complementaremos los dos capítulos anteriores (7. El objeto document8.- La interfaz Node), en los cuales analizamos la teoría de dos de las herramientas más utilizadas de javascript que juntas podemos realizar modificaciones dinámicas de nuestra página web.

Para ello vamos realizar una transformación de un elemento input(<input>) por algunos de sus tipos, y esto lo haremos de una manera fácil, y comenzamos por tener el contenido HTML siguiente:

<div>
<select id="comboMagico" onchange="CambiaComponente()">
<option selected="selected" value="TextBox">TextBox</option>
<option value="Button">Button</option>
<option value="CheckBox">CheckBox</option>

</select>
</div>
<div>
<input  type="text" value="Input Magico" id="inputMagico" />
</div>

Tenemos un elemento combobox (<select>) y un elemento input (<input>) los cuales tienen su id para poderlos identificar; el elemento combobox contiene una función que se activa en el evento onchange (como vimos en el capitulo de eventos de este curso) y que se activa cada que cambiamos la opción seleccionada de nuestro combobox.

Lo que haremos a continuación es que al ser cambiada la opción del combobox, nuestro input de la parte de abajo, se transforme en el tipo seleccionado, es decir si seleccionamos la opción Button, nuestro input se transforme en un botón.

Para ello haremos la función que invoca el combobox de nombre CambiaComponente() de la siguiente manera:

function CambiaComponente(){

//utilizando el metodo getElementById de document obtenemos el nodo del combobox
//y con el atributo value obtenemos la opcion seleccionada
opcion=document.getElementById("comboMagico").value

//Hacemos un switch case, dependiendo la opcion seleccionada en el combobox realizamos una transformación.
switch (opcion){

case "TextBox":
document.getElementById("inputMagico").type="text"
break;

case "Button":
document.getElementById("inputMagico").type="button"
break;

case "CheckBox":
document.getElementById("inputMagico").type="checkbox"
break;

}
}

Lo que hacemos con la función es obtener el valor seleccionado por medio del objeto document, la función getElementById y el atributo value, y después analizarla con un switch case para así transformar nuestro input en el valor elegido.

Para ver un ejemplo del código en ejecucion, ahora no pondre un den clic aqui, pueden observarlo abajo y ustedes hacer la prueba moviendo el combobox:

En este capitulo vimos la facilidad de modificar elementos HTML, y transformarlos, esto nos abre miles de posibilidades para realizar acciones dinámicas a nuestras páginas web.

Ir Capítulo Siguiente (10.- Creación de elementos HTML con Javascript)

Ir Capítulo Anterior (8.- La interfaz Node)

8.- La Interfaz Node – Curso Básico de #Javascript #8

La interfaz Node es de la cual todos los Nodos de un documento xml heredan, en este caso cuando utilizamos HTML (XHTML, HTML5) nuestros Nodos son los elementos de la pagina (<a><p><input>), a estos Nodos se le atribuyen ciertas funcionalidades y atributos, los cuales podemos utilizar por medio de javascript, asi que en lo largo de este capitulo cada que hablemos de Nodo estamos hablando de un elemento HTML.

Siendo que estos Nodos heredan de la interfaz Node, podemos aplicar a nuestros elementos de HTML las siguientes funcionalidades (métodos):

MetodoDescripción
appendChild()Agrega un nuevo nodo hijo al final de los nodos hijos del Nodo al que ejecutamos el metodo.
cloneNode()Clona el Nodo
compareDocumentPosition()Compara la colocación de dos nodos en la jerarquía del DOM
getFeature(feature,version)Devuelve un objeto DOM que implementa las APIs especializadas de la función y la versión especificada
getUserData(key)Devuelve el objeto asociado a una tecla en un este nodo. El objeto, primero debe haberse establecido en este nodo llamando setUserData con la misma clave
hasAttributes()Devuelve true si el nodo especificado tiene algún atributo, false en caso contrario
hasChildNodes()Devuelve true si el nodo especificado tiene nodos secundarios, false en caso contrario.
insertBefore()Inserta un Nodo hijo antes del Nodo seleccionado
isDefaultNamespace(URI)Devuelve si el namespaceURI especificado es el valor por defecto
isEqualNode()Comprueba si dos Nodos son iguales
isSameNode()Comprueba si dos Nodos son el mismo Nodo
isSupported()Comprueba si la implementación DOM soporta una función específica y que la función es compatible con el nodo especificado
lookupNamespaceURI()Devuelve el URI de espacio de nombres asociado con el prefijo dado
lookupPrefix()Devuelve el prefijo asociado a un espacio de nombres determinado URI
normalize()Pone todos los nodos de texto debajo de un nodo (incluidos los nodos de atributos) en una forma «normal», donde sólo la estructura (por ejemplo, elementos, comentarios, instrucciones de procesamiento, secciones CDATA y referencias a entidades) separa los nodos de texto, es decir, no existen nodos de texto adyacentes ni los nodos de texto vacíos
removeChild()Elimina un Nodo hijo en especifico del Nodo en el que utilizamos este método.
replaceChild()Remplaza un nodo Hijo con un nuevo Nodo hijo.
setUserData(key,data,handler)Asocia un objeto a una tecla en un nodo

Cabe mencionar que no todos estos métodos se aplican a todos los elementos, ya que hay elementos que no tienen hijos por ejemplo los tipo <input> o <img> por lo cual ejecutar el método removeChild() a uno de estos elementos es paradójico

Ahora que ya vimos el listado de los métodos que pueden realizarse en javascript a los elementos HTML, veamos una lista de los atributos (propiedades) que podemos obtener o asignarles un valor, y son los siguientes:

AtributoDescripción
attributesContiene los atributos de este Nodo, por ejemplo, tratándose de un input, podriamos utilizar el atributo value o id
baseURIDevuelve el URI de base absoluta de un nodo
childNodesDevuelve un tipo NodeList que contiene todos los Nodos hijos del Nodo con el que se utiliza el atributo
firstChildRegresa el primer Nodo hijo del Nodo con el que se utiliza el atributo
lastChildRegresa el ultimo Nodo hijo del Nodo con el que se utiliza el atributo
localNameDevuelve la parte local del nombre de un nodo
namespaceURIRegresa el namespace (espacio de nombre) URI del Nodo
nextSiblingDevuelve el Nodo inmediato del Nodo al que se utilizo el atributo
nodeNameDevuelve el nombre de un Nodo, dependiendo de su tipo
nodeTypeRegresa el tipo del Nodo
nodeValueEstablece o devuelve el valor de un nodo, dependiendo de su tipo
ownerDocumentDevuelve el elemento raíz (Document Object) para un nodo
parentNodeRegresa el padre del Nodo
prefixEstablece o devuelve el prefijo de espacio de nombres de un nodo
previousSiblingDevuelve el Nodo anterior del Nodo del que utilizamos este atributo
textContentEstablece o devuelve el contenido de texto de un nodo y sus descendientes

Esta lista de atributos cabe recalcar el del nombre attributes que viene siendo los atributos de los elementos HTML, por ejemplo los atributos de un elemento de tipo <img> pueden ser “src”, “style”, “position”, etc.

Para poder seleccionar un Nodo utilizaremos el objeto que vimos el capitulo anterior, el objeto document, veamos un ejemplo:

Código HTML

<img id="imagen" src="https://hdeleon.net/wp-content/uploads/2014/01/cropped-cropped-logo1.jpg" />

<input type="button" value="cambia tamaño" onclick="cambiaTamano()" />

Código Javascript

function cambiaTamano(){
Nodo= document.getElementById("imagen")

//utilizamos el atributo style que a su vez tiene los atributos CSS y asignamos un nuevo width (ancho)
Nodo.style.width="300px";
}

Como podemos ver en el ejemplo utilizamos el objeto document, y uno de sus métodos, getElementById(), con esto, podemos obtener el Nodo deseado en este caso por medio de su Id, y poder utilizar la lista de funcionalidades y atributos anteriormente mostrada, en el código anterior cambiamos el tamaño de una imagen, y si quieren ver como funciona su ejecución den clic aquí.

En este capitulo unimos la funcionalidad de el objeto document, y los Nodos de una pagina web, y los siguientes dos capítulos haremos algo con lo cual se quitaran de todas las dudas (si es que tienen), y podrán ver el potencial de tener estas herramientas a la mano.

Ir Capítulo Siguiente (9.- Modificación de elementos HTML con Javascript)

Ir Capítulo Anterior (7.- El objeto document)

7.- El objeto document – Curso Básico de #Javascript #7

Este capítulo está enfocado a el objeto document, un objeto que nos brinda javascript con el cual podemos hacer referencia a cualquier elemento que contenga nuestra página, poder manipular el elemento, sus atributos y valores, y gracias a esto sacar el potencial de javascript sobre el contenido HTML.

El objeto document hace referencia a todos los elementos de nuestra página web,  es el padre de todos los objetos HTML, y por medio de este podemos hacer referencia a ellos, pero no solo eso, también nos permite agregar nuevos elementos (en el capítulo 10 trata sobre esto). El objeto document se utiliza como un nodo de un grafo (árbol), y es el nodo padre de todos los elementos, funciona como grafo, en el cual podemos desplazar hacia sus hijos una vez seleccionado el padre.

La siguiente lista de métodos y atributos son los que pueden ser utilizados por el objeto document:

Atributo /MétodoDescripción
document.adoptNode(node)Devuelve un nodo adapded de otro documento a este documento.
document.baseURIAtributo que contiene la url de la pagina
document.anchorsObtiene todos los elementos anchors (<a>) de la pagina
document.close()Cierra la ventana actual siempre y cuando esta haya sido abierta por window.open() o document.open()
document.cookieRegresa todas las cookies de la pagina
document.createAttribute()Crea un atributo en el nodo
document.createComment()Crea un comentario en la pagina
document.createDocumentFragment()Crea un fragmento(fragment) de código HTML.
document.createElement()Crea un elemento en la página.
document.createTextNode()Crea un nodo texto.
document.doctypeRegresa la DOCTYPE(Document Type Declaration) asociada al documento
document.documentElementRegresa el mismo document, en si es el contenido de la pagina entero.
document.documentURIAtributo que contiene la ubicación del documento (url de la pagina)
document.domainRegresa el dominio de la pagina
document.formsRegresa una colección que contiene todos los elementos forms de la pagina
document.getElementById()Regresa el nodo de un elemento por su Id
document.getElementsByName()Regresa  todos los elementos por su nombre.
document.getElementsByTagName()Regresa una lista de Nodos que contienen un tag name.
document.headRegresa el nodo head (<head>), del documento
document.imagesRegresa una colección de todas las imagenes de la pagina
document.implementationRegresa la implementación del DOM
document.importNode()Importa un Nodo de otro document. De un iframe por ejemplo.
document.inputEncodingRegresa la codificación del documento, por ejemplo UTF8.
document.lastModifiedRegresa la hora de la última modificación del documento.
document.linksRegresa una colección de todos los links de la pagina.
document.normalize()Remueve Nodos de Texto en blanco, y une los Nodos adyacentes
document.normalizeDocument()Remueve Nodos de Texto en blanco, y une los Nodos adyacentes
document.open()Limpia el documento, para plasmar nuevo contenido HTML
document.readyStateRegresa el Estado de la petición de la pagina
document.referrerDevuelve la dirección URL del documento que ha cargado el documento actual
document.renameNode()Renombra el nodo especifico
document.strictErrorCheckingEstablece o devuelve si la comprobación de errores se hace cumplir o no
document.titleEstablece o devuelve el título del documento
document.URLDevuelve el URL completo del documento
document.write()Escribe expresiones HTML o código JavaScript en un documento
document.writeln()Igual que write (), pero añade un carácter de nueva línea después de cada declaración

Veamos qué es lo que podemos realizar con el objeto document, para ello escribo el siguiente código:

document.title="Nombre del title modificado desde JAVASCRIPT"

De este modo modificamos el titulo de nuestra pagina. Ahora veamos como podemos obtener los elementos de un Tag Name en especifico

Código HTML

<p>parrafo 1</p>
<p>parrafo 2</p>
<p>parrafo 3</p>

Código Javascript

var elementos= document.getElementsByTagName("p");
var cadena="";
for(i=0;i<elementos.length;i++){
	cadena+=elementos[i].innerHTML+","
}

//mostramos el contenido html de los parrafos
alert(cadena)

De esta ultima forma obtenemos los párrafos y su contenido html, y todo a partir del objeto document.

Para ver este código en ejecución den clic aquí.

Ir Capítulo Siguiente (8.- La interfaz Node)

Ir Capítulo Anterior (6.- Eventos)