Mostrando las entradas con la etiqueta javascript. Mostrar todas las entradas
Mostrando las entradas con la etiqueta javascript. Mostrar todas las entradas

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]

viernes, 27 de noviembre de 2009

ajaxEngine.sendRequest : Envío dinámico de parámetros

El uso normal de este método es el siguiente:
ajaxEngine.sendRequest('loadData', 'paramName1=' + paramValue1, ..., 'paramNameN=' + paramValueN);
Esto es válido cuando el número de parámetros es fijo. Pero en algunos casos, ese número de parámetros puede variar, por ejemplo si vamos a enviar los valores de un arreglo javascript (como los del post anterior). En tal caso, no resulta tan sencillo el llamado a dicho método. Pero la solución está aquí:
var queryS = "parteNombre="+parteNombre + "&incluir="+incluir;

for (i = 0; i < roles.length; i++){
   queryS += "&roles=" + roles[i];
}

var opt = {
  method: 'post',
  postBody: queryS,

onSuccess: function(t) {
},

on404: function(t) {
},

onFailure: function(t) {
}
};

ajaxEngine.sendRequest('loadData', opt);
Primero se crea el queryString con todos los parámetros que queremos enviar y luego se le pasa dinámicamente esa variable al postBody. La verdad no entiendo muy bien cómo funciona, pero funciona. Visto en http://forum.openrico.org/topic/519

Cómo enviar un arreglo en el request

No debe ser algo muy común, pero necesité enviar un arreglo de javascript en un request.
Digo que no debe ser algo muy común, porque pues para eso está el input checkbox.

Pero en este caso la idea no era que lo enviara el usuario sino que el arreglo se carga con variables de la jsp.

En fin, el caso es que para enviar ese arreglo como un parametro en el request, lo que toca hacer es enviar cada uno de los valores del arreglo con el mismo nombre de parámetro. Entonces el querystring sería:
...ActualizarRoles?roles=1&roles=3&roles=4&roles=8

Ya en el servlet, los valores se reciben de la misma manera que se reciben los valores de los checkboxes:
String [] roles = request.getParameterValues("roles");