Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/03/2014, 10:50
PHPeros
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Problema con deshabilitar un select!

Empezar diciendo que el keyword this se puede evitar cuando se llama de forma lineal (desde atributos en html) porque siempre se toma de referencia a sí mismo, luego onchange="window[this.value]" es lo mismo que onchange="window[value]".

Ahí se utiliza window porque que todas las variables y funciones declaradas en el scope global son propiedades de éste objeto. Lo que hace el array literal es acceder a sus propiedades (en realidad un array son todo propiedades, incluso los numéricos que solo pueden ser accedidos de esta forma). La diferencia entre el punto y el array literal es que los nombres de las propiedades se pasan de forma distinta, por ejemplo:

Código:
// Forma normal
window.alert();
o
alert();

// Mediante array "asociativo"
window["alert"]();
En este caso como lo que obtenermos de la propiedad value del select es texto o string, necesitamos utilizar la segunda forma. Digamos que son dos alternativas. Te pongo otro ejemplo:

Código:
var arr = [];
arr["propiedad"] = "algo";

console.log(arr.propiedad); // "algo"
console.log(arr["propiedad"]); // "algo"

// Atento a este, también pueden pasarse variables con texto, números etc. mientras que en el normal no.

var variable = "propiedad";
console.log(arr[variable]); // "algo"
Espero haberme explicado más o menos.

Saludos

Última edición por PHPeros; 08/03/2014 a las 12:35