Un espacio para los entusiastas del web

10 funciones imprescindibles en Javascript

Publicado el 21 de Junio, 2007

En la era de la información y en la denominada Web 2.0 no es posible sobrevivir sin tener un buen nivel de Javascript. En estos pequeños 10 puntos trataré de enriquecer un poco más la capacidad del lector, detallando algunos de las funciones/métodos más importantes de Javascript, junto con ejemplos prácticos.

Javascript es un leguaje de scripting interpretado orientado a pseudo-objetos, esto es, que no existe herencia, aunque se puede conseguir clonando una clase y añadiendo más métodos o propiedades. Casi todos los navegadores existentes pueden interpretar Javascript, ya que es de hecho un estándar: ECMAScript (ECMA = European Computer Manufacturers Association).

Pero sólo con el lenguaje JavaScript no podremos hacer nada en una página web. También necesitaremos el DOM (Document Object Model). El DOM es una estructura de objetos que representa absolutamente todos los elementos que componen una web, y mediante él conseguiremos acceder a información de la página web, añadir nuevos elementos, o modificarlos.

Todos estos métodos pertenecen a objetos del DOM: window, document , y element.

Función1: getElementById()

Uso: var elemento = document.getElementById(id);

Este método pertenece al objeto document. Con él obtendremos el objeto que hace referencia al elemento con un id concreto. Por ejemplo, queremos obtener el objeto del elemento “status”:

<div>
      <span id=”status”>Hola mundo...</span>
</div>
<script type=”text/javascript”>
// Obtenemos el elemento “status”
var el = document.getElementById(“status”);
// Mostramos mediante una alerta el contenido del elemento
alert(el.innerHTML);
</script>

Función 2: getElementsByTagName()

Uso:var array_elementos= elemento.getElementsByTagName(tag);

Sirve para obtener un array con todos los elementos con un tag concreto que están contenidos dentro de un elemento. Veamos una ejemplo. Queremos cambiar el color del texto de todos los elementos con tag “A” contenidos dentro del elemento con id “links”:

<a href=”/”>Home</a>
<div id=”links”>
      <a href=”http://google.com”>Google</a>
      <a href=”http://ubuntu.com”>Ubuntu</a>
      <a href=”http://debian.org”>Debian</a>
</div>
<script type=”text/javascript”>
// Obtenemos el elemento con id “links”
var el = document.getElementById(“links”);
// Ahora obtenemos todos los elementos con tag A que hay
// dentro del elemento 'el'
var as = el.getElementsByTagName(“A”);
// Y finalmente recorremos el array de elementos para
// cambiarles el color a cada uno
for (var i=0; i<as.length; i++) {
      as[i].style.color = '#000'; // negro
}
</script>

Función3: join()

Uso: var string = array.join(string);

El método join() pertenece al objeto Array (todos los arrays en JavaScript son un objeto Array), y nos servirá para unir todos los elementos de un array para forma una cadena de texto. Es el equivalente en PHP a implode(). Ejemplo: Queremos unir todos los nombres de un array mediante comas:

// Creamos el array de nombres
var nombres = ['Luis','Javier','Sancho','Roberto','Rafael','Manuel'];
// Unimos todos los elementos separándolos por comas
var juntos = nombres.join(“, “);
// Y lo mostramos
alert(juntos); 

Función4: split()

Uso:var array = string.split(string);

Al igual que join(), split() también es un método del objeto Array, aunque sirve exactamente para lo contrario: dividir una cadena de texto en un array. Siguiendo con el ejemplo anterior:

var juntos = “Luis, Javier, Sancho, Roberto”;
var nombres = juntos.split(“, “);
for (var i=0; i

Truco: Usados ambos métodos conjuntamente podremos crear una función para sustituir un texto por otro en una cadena dada:

function str_replace(cadena, cambia_esto, por_esto) {
      return cadena.split(cambia_esto).join(por_esto);
}
alert(str_replace('Hola mundo!','mundo','world')); 

Función5: addEventListener() / attachEvent()

Uso: Internet Explorer: elemento.attachEvent(“on”+evento, funcion);
Resto de navegadores: elemento.addEventListener(evento, funcion, false);

Ambos métodos hacen exactamente lo mismo, sólo que, como ocurre en otros cientos de ocasiones, Microsoft usa su propia implementación del DOM. Con este método añadiremos eventos a cualquier elemento de la página web, tal como onclick, onmouseover, onmouseout, etc.

Veamos un ejemplo. Crearemos una función para la abstracción de navegadores, es decir, para que funcione tanto en IE como en Firefox o cualquier otro navegador; y después añadiremos el evento onclick a varios elementos DIV para que muestre su contenido mediante una alerta al hacer clic sobre ellos.

<div id=”frases”>
      <div>Hola mundo!</div>
      <div>Foo bar</div>
      <div>Lorem Ipsum</div>
</div>
<script type=”text/javascript”>
// Creamos la funcion para añadir eventos
function nuevo_evento(elemento, evento, funcion) {
      if (elemento.addEventListener) {
            elemento.addEventListener(evento, function, false);
      } else {
            elemento.attachEvent(“on”+evento, function);
      }
}
// Obtenemos los elementos DIV a los que queremos añadir nuestro evento onclick
var divs = document.getElementById(“frases”).getElementsByTagName(“DIV”);
// Recorremos todos los divs
for (var i=0; i<divs.length; i++) {
      // Añadimos el evento onclick al div
      nuevo_evento(divs[i], “click”, function(){
            // Hacemos que muestre el contenido del DIV
           alert(this.innerHTML);
      });
}
</script>

Cuando hagamos clic en uno de los DIV, se nos mostrará una ventana de alerta con su contenido.

Función6: focus()

Uso: elemento.focus();

Con este método conseguiremos pasar el foco a un elemento de un formulario. Ejemplo:

form>
      <input type=”text” id=”nombre” value=”Javier” />
      <input type=”text” id=”apellidos” value=”Perez” />
</form>
<a href=”#” onclick=”document.getElementById(“nombre”).focus()”>Nombre</a>
<a href=”#” onclick=”document.getElementById(“apellidos”).focus()”>Apellidos</a> 

Función7: createElement() / appendChild()

Uso: var elemento = document.createElement(tag);

Con éste método del objeto document crearíamos un nuevo elemento con un tag determinado. Ejemplo: var div = document.createElement('DIV');

Uso: elemento1.appendChild(elemento2);

Con este método añadiremos el elemento “elemento2” a “elemento1”. En el siguiente ejemplo, añadiremos elementos a una lista de forma dinámica:

<input type=”text” id=”texto” />
<input type=”button” value=”Crear” onclick=”crear()” />
<ul id=”lista”></ul>
<script type=”text/javascript”>
function crear() {
      // Obtenemos el valor entrado en la caja de texto
      var valor = document.getElementById(“texto”).value;
      // Creamos un nuevo elemento LI
      var li = document.createElement(“LI”);
      // Añadimos el valor introducido al nuevo elemento
      li.innerHTML = valor;
      // Añadimos el elemento LI a la lista UL
      var ul = document.getElementById(“UL”);
      ul.appendChild(li);
      // Vaciamos la caja de texto
      document.getElementById(“texto”).value = “”;
}
</script> 

Función8: removeChild()

Uso: elemento.removeChild(hijo);

Este método es el usado para eliminar elementos. Se elimina el elemento hijo del objeto. Si queremos eliminar un objeto concreto, tendremos que hacerlo de la siguiente manera:

// Obtenemos el elemento
var el = document.getElementById(“elemento-a-eliminar”);
// Obtenemos el padre de dicho elemento
// con la propiedad “parentNode”
var padre = el.parentNode;
// Eliminamos el hijo (el) del elemento padre
padre.removeChild(el);

Función9: setTimeout() / setInterval()

Uso:var temporizador = setTimeout(funcion, milisegundos);
var intervalo = setInterval(funcion, milisegundos);

Ambos métodos (objeto window) nos sirven para ejecutar código javascript cada x milisegundos, bien para que se ejecute una sóla vez (setTimeout) o bien para que se ejecute ilimitadamente (setInterval). Ambos se pueden cancelar mediante clearTimeout(temporizador) y clearInterval(intervalo). Veamos un ejemplo, donde se muestra la hora y fecha del sistema cada segundo en un DIV:

<div id=”fecha”></div>
<script type=”text/javascript”>
      setInterval(function(){
            document.getElementById(“fecha”).innerHTML = new Date();
      },1000);
</script> 

Función10: alert() / confirm() / prompt()

Uso: alert(mensaje);
var resultado = confirm(mensaje);
var resultado = prompt(mensaje, valor);

Con estos métodos (objeto window) mostraremos ventanas modales al usuario. Con alert() simplemente, como hemos visto en otros puntos, mostraremos un mensaje. Con confirm() haremos exactamente lo mismo, pero además obligará al usuario a seleccionar entre dos opciones, una positiva y otra negativa, que se devolverá como parámetro (boolean). Y con prompt() pediremos al usuario que introduzca un texto en una ventana modal. Veamoslo con un ejemplo:

// Pedimos al usuario que introduzca su nombre
var nombre = prompt(“Introduzca su nombre”);
// Pedimos confirmación
if (confirm(“¿Seguro que su nombre es ”+nombre+”?”)) {
      // Respuesta afirmativa...
      alert(“Hola ”+nombre);
}

confirm() es muy útil para confirmar clics en enlaces comprometidos, que hagan operaciones críticas como eliminación de datos.

<a href=”http://miweb.com/delete/record?id=123” onclick=”return confirm('¿Está seguro?');”>Eliminar registro</a>

Existen muchos más métodos a nuestra disposición, aunque hay que tener en cuenta que Internet Explorer no cumple el estándar ECMAScript/DOM (entre otros tantos estándares web), y puede que un método no funcione igual en IE que en Firefox o Safari.

Aprenderse el DOM es fundamental para poder llegar a ser un buen profesional, pero por suerte para nosotros existen librerías Javascript que nos harán la vida mucho más fácil, como jQuery, la sensación del momento entre los programadores Javascript.

Referencia

¿Te gustó?

¡Sí, me gusta! Le ha gustado a 148 personas
Loading ... Loading ...

Javier PerezJavier Perez para Maestros del Web.
Agrega tu comentario | Enlace permanente al artículo

Síguenos en: @maestros | Fan page

Comentarios

  1. Aitor

    Muy bien artículo…

    Responder
  2. Alekz

    Gracias por el artículo, yo la verdad ando muy flojo en cuanto a JavaScript y esto me ha servido bastante, sobretodo lo de appendChild() no lo conocía y me pareció muy interesante.

    Responder
  3. Pero esto no son “funciones en Javascript”, sino métodos de objetos existentes.

    El artículo esta bueno, pero yo -al ver el título- pense que eran funciones de usuario escritas en Javascript.

    Saludos.

    Responder
  4. caricatos

    Hola:

    Aunque es una buena selección se echa en falta métodos como insertBefore (ya que se nombra appendChild), o hasChildNodes, cloneNode, setAttribute, getAttribute…

    Tal vez sea una buena idea complementar este artículo con una selección de atributos y tal vez colecciones.

    Saludos ;-)

    Responder
  5. VIRIDIANA

    Hola.
    Me perecio bueno, pero a mi que soy una aprendiz de javascript siento que me falto mas informacion, les sugiero compensarlo con mas instrucciones; los ejemplos estan super entendibles… FELICITACIONES¡¡¡¡¡

    Responder
  6. Javier

    Muy bueno, Gracias!!

    Responder
  7. Muy buena coleccion de tips. Todo novato debe enfocarse a dominar estas funciones. Gracias

    Responder
  8. flxruiz

    Excelente articulo y los ejemplos son muy entendible

    Responder
  9. vinicioWEB

    Muy bueno el artículo

    Responder
  10. wilfredo

    muy bueno el articulo facil de entender..

    Responder
  11. A mí la verdad es que me ha gustado. Ya conocía la mayoría pero nunca viene mal un repaso.

    Y como ya han dicho los ejemplos bastante buenos.

    Responder
  12. ElGAto

    estuvo muy bueno, justamente estaba buscando algo como el “document.createElement(tag)” .
    De todas formas quisiera saber si el mismo método o algún otro te permiten crear el elemento con el ID incluido. EJ: quiero crear un esta es la capa 1.
    Bueno estare muy agradecido por las sugerencias o posibles soluciones. gracias

    Responder
  13. ElGAto

    el anterior mensje esta mal , por que reconocio el código que puse.
    Volviendo…
    EJ: quiero crear algo así “esta es la capa 1 “.
    existe algun modo

    Responder
  14. Doctor Lecter

    Muy bueno, muy simple y muy util.

    Responder
  15. Quééééééééé fuerte!!! Yo aquí buscando funciones en Javascript y me encuentro a un Javi por aquí!!!

    Un besote malaguitas… A mí también me ha venido fenomenal

    Responder
  16. urix

    Hola, me gustaria obtener los nombres de una picklist de un formulario… he intentado crmForm.all.(nombre campo).name, .text, y nada. alguien sabe como?

    Responder
  17. Alexander

    Me parece un articulo muy bien formado y presentado, es una gran ayuda para quienes necesitamos referencias rapidas y sencillas sobre el javascript avanzado, me parece que deberian comentar un poco mas sobre el jquery se ve algo interesante y de gran ayuda

    Responder
  18. Felipe

    Preciso el de split tiene error.

    Responder
  19. esta exeplen eso de los scripts, deberian de publicar un poco mas de rutinas, apenas tengo dos semanas

    Responder
  20. marsupial

    Hola, muy buena coleccion, gracias Javier..
    pero de paso queria comentar que no me funciono el codigo de la ‘Función7: createElement() / appendChild()’ pero cambie :
    var ul = document.getElementById(“UL”);
    por
    var ul = document.getElementById(‘lista’);
    Y las comillas dobles por simples de toda la funcion, y todo bien. ¿Realmente nose xq las comillas dobles evitaban que funcionara el js?.

    Responder
  21. exelente amigoz, me gustaria que se agregaran mas funciones o si asi lo desean yo les paso de las k tengo y las tengo en uzo.

    ez todo noz vemoz en el futuro…!

    VAI

    Responder
  22. Michael Palacios

    ñam ñam bueno el articulo pero hay un error mas en la funcion 5 de addEventListener y attachEvent cuando declaras el metodo “nuevo_evento” en las lineas del if/else en la parte de “elemento.addEve…” y “elemento.att…” pusiste de parametro “function” cuando debio ser “funcion”…..
    por lo demas buen trabajo y sigue asi……

    Responder
  23. marcis

    split() es un método del objeto String, no de Array

    Buena recopilación!! ;)

    Responder
  24. espinete

    Señor, cómo se pueden desarrollar extensiones para Firefox ?? saludos.

    Responder
  25. Patricio

    En la funccion 8 dice:
    var ul = document.getElementById(“UL”);
    y debe ser:
    var ul = document.getElementById(“lista”);

    Responder
  26. Jose Gregorio Leal

    Hola tengo alguna experiencia con javascript.. no mucha.. pero hace poco me surgio este problema con getElementById.. Intente hacer una clase para implementar un indice de paginas y al intentar hacer getElementById dentro de uno los metodos siempre me dio null.. aun cuando el elemento con ese id existia.

    Responder
  27. Jose Gregorio Leal

    function Index(totalpages,indexsize,containerId)
    {
    this.totalpages=totalpages;
    this.page=0;
    this.actualFirst=0;
    this.size=indexsize;
    this.containerId=containerId;

    this.goNext = function goNext()
    {
    }

    this.goBack = function goBack()
    {
    }

    this.doRefresh = function doRefresh()
    {
    var html=”;
    for(i=this.actualFirst;i<this.size;i++)
    {
    html+=’‘;
    }
    html+=”;
    //aqui
    document.getElementById(this.containerId).innerHTML = html;

    }

    }
    var indice=new Index(20,4,’indice’);
    indice.doRefresh();

    Responder
  28. edu

    A mi me gustaría tener ayuda de como untilizar combos anidados con javascript.

    Responder
  29. Yo utilizo mucho javascript y nunca había usado estas funciones. Gracias, trataré de aprenderlas.

    Responder
  30. Joel Samuel Caihuaray Silva

    Quisiera la solucion en javascript de como HALLAR EL MAYOR DE N NUMEROS.

    Responder
  31. Esta muy bueno este Articulo de JavaScript

    Responder
  32. jose luis pawlow

    Exelente la claridad y contenido de la nota.
    Muchas gracias

    Responder
  33. cristian

    Hola, muy bueno el articul. Siguiendo el comentario de caricatos, nos sería de mucha utilidad una actualización del mismo, sobre todo para aquellos que recien comenzamos con javascript.

    Gracias y saludos!

    Responder
  34. faztor

    muy bueno el articulo, facil de comprender!!!!!!!!!

    Responder
  35. Max

    Saludos, la funcion del FOCUS no funciona, si van hacer alguna publicacion de este tipo asegurence que funcionen correctamente, otra mas tienen detalles.

    Responder
  36. el_trocha

    no entiendo por que cuando analizo un scrip con el debugger de netbeans, no me lee ninguna funcion. Me explico, por ejemplo este script:

    function Enter(){
    var s = document.getElementById(“comp”).value.lenght;
    if( s > 2){
    document.getElementById(“idUser”).focus()
    }
    else{
    document.getElementById(“idPass”).focus()
    }
    }

    NO reconoce ninguna de las lineas, he probado cambiando las “” por ”, he probado declarando dos variables, de este modo :

    var s = document.getElementById(“comp”).value;
    var r = s.lenght;
    tampoco funciono.
    Y por supuesto tampoco me reconoce las funciones del focus.
    No se que hago mal.
    Por que los scripts con Alert si aparece la pantalla de alerta.
    Gracias si me pueden ayudar.

    Responder
  37. arlem

    me ayudo mucho para un examen que tenia gracias

    Responder
  38. Julio

    Alguien sabe la diferencia entre un método y una función JavaScript?
    Creía que eran iguales pero leyendo un libro me di cuenta de que no

    Gracias.

    Responder
  39. Buen Día,

    espero que alguien me pueda ayudar con lo siguiente,

    tengo la sig. variable sal = APPLET:

    1;Gerardo Guada;Marroquin Daniel;Gerente De Servicios Pt ;DIR.DE NEGOCIO PT;FFFFFF;index.jsp?idtr
    ab=0003654&nivel=1&vertical=si&tipo=1 |2;Jose Guadalupe;Garcia Fraga;Lider Call Center Pt ;DIR.DE NEGOCIO PT;FFFFFF;index.jsp?idtrab=0046846&nivel=1&vertical=si&tipo=2 |2;Ricardo;Bueno Diaz;Ingeniero De Servicio A Campo ;DIR.DE NEGOCIO PT;FFFFFF;index.jsp?idtrab=0001913&nivel=1&vertical=si&tipo=2 |2;Gabriela;Martinez Mares;Coordinador De Servicios ;DIR.DE NEGOCIO PT;FFFFFF;index.jsp?idtrab=0036389&nivel=1&vertical=si&tipo=2

    quiero formar un organigrama con HTML con los empleados que aparecen en la cadena, cada empleado esta identificado con 1 o 2, si es uno va en la parte superior y si es dos en la parte inferior.

    Salu2¡¡¡¡

    Responder
  40. DevCH

    El Método Focus() no funciona en Mozilla Firefox…

    Responder

Deja tu Comentario

Maestros del Web se reserva el derecho de moderación de los comentarios. Evita utilizar palabras soeces, ataques directos, descalificativos, insultos, de lo contrario tu comentario será eliminado.



Acerca de

Maestros del Web nace cuando intentamos traducir Webmaster al Español. Nacimos orientados al diseño y desarrollo web. Hoy somos un espacio de apoyo para los entusiastas que participan en proyectos en la red.
Leer más de Maestros del Web