domingo, 22 de mayo de 2011

element.getAttribute("class") y element.setAttribute("class", "nuevaClase")

Hace mucho tiempo no me encontraba con el problema que tiene Internet Explorer con el atributo class.
Según el estándar DOM, por medio de javascript podemos obtener la clase de un elemento con esta línea:
clase = element.getAttribute("class");
Y cambiarla, con la siguiente:
element.setAttribute("class", "nuevaClase")
Pero como a Internet Explorer no le importan los estándares, esos comandos no tienen utilidad en ese "navegador". Hay varias formas de resolver el problemita, pero la más sencilla es no usar los comandos anteriores (los que son del estándar), si no los siguientes:
clase = element.className;
element.className = "nuevaClase";
De esta forma funciona en todos los navegadores.
La razón por la que esto funciona es porque se está accediendo a la propiedad del elemento directamente y no al atributo que es la manera sugerida.

lunes, 9 de mayo de 2011

Expresiones regulares: diferencia entre match y exec

En javascript las funciones String.match() y RegExp.exec() son muy parecidos. Su única diferencia está en que si se usa la opción g (global), el segundo retornará el primer match y todos lo grupos que se hayan definido en la expresión regular, mientras que el primero no retorna los grupos.
Ejemplo:
texto = "aaaa12345aaaa";
regex = /(aaaa)(.*)(aaaa)/g;
errorExec = regex.exec(texto);  // [aaaa12345aaaa, aaaa, 12345, aaaa]
errorMatch = texto.match(exec); // [aaaa12345aaaa]