Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/02/2015, 12:03
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 14 años
Puntos: 206
Respuesta: Paleta de colores en JS

Veo que te has molestado en programar algo, asi que yo me molesto en reorganizarlo un poco lo que mas o menos tienes:

http://jsfiddle.net/marlanga/jufrgchc/

Código Javascript:
Ver original
  1. String.prototype.pad = function( n, p ) {
  2.     var s = '', n = Math.max( 0, n - this.length );
  3.     while( n-- ) {
  4.         s = p.toString() + s;
  5.     }
  6.     return s + this;
  7. };
  8. var ColorPicker = {
  9.     elementos : {
  10.         r : null,
  11.         g : null,
  12.         b : null,
  13.         input : null,
  14.         color : null
  15.     },
  16.     funciones : {
  17.         cargar : function() {
  18.             ColorPicker.elementos.r = document.getElementById( "rojo" );
  19.             ColorPicker.elementos.g = document.getElementById( "verde" );
  20.             ColorPicker.elementos.b = document.getElementById( "azul" );
  21.             ColorPicker.elementos.input = document.getElementById( "resultado" );
  22.             ColorPicker.elementos.color = document.getElementById( "color" );
  23.            
  24.             ColorPicker.elementos.r.addEventListener( 'input', ColorPicker.funciones.change );
  25.             ColorPicker.elementos.g.addEventListener( 'input', ColorPicker.funciones.change );
  26.             ColorPicker.elementos.b.addEventListener( 'input', ColorPicker.funciones.change );
  27.            
  28.             ColorPicker.funciones.change();
  29.         },
  30.         getHex : function( value ) {
  31.             value = parseInt( value );
  32.             return value.toString( 16 ).pad( 2, 0 ).toUpperCase();
  33.         },
  34.         getColor : function() {
  35.             var r = ColorPicker.funciones.getHex( ColorPicker.elementos.r.value );
  36.             var g = ColorPicker.funciones.getHex( ColorPicker.elementos.g.value );
  37.             var b = ColorPicker.funciones.getHex( ColorPicker.elementos.b.value );
  38.             return '#' + r + g + b;
  39.         },
  40.         putColor : function( color ) {
  41.             ColorPicker.elementos.color.style.backgroundColor = color;
  42.             console.log(color);
  43.         },
  44.         change : function() {
  45.             var color = ColorPicker.funciones.getColor();
  46.             ColorPicker.funciones.putColor( color );
  47.             ColorPicker.elementos.input.value = color;
  48.         }
  49.     }
  50. };
  51. window.onload = function(){
  52.     ColorPicker.funciones.cargar();
  53. }

He encapsulado el codigo en un solo objeto, ahora está organizado en una sola variable global, en vez de ser un conjunto de funciones y variables globales desperdigadas por tu script (que pueden provocar colisiones de nombbres con otros scripts que tengas en la misma página).

Para hacer pad (rellenar cadenas con caracteres predeterminados) he modificado el "prototipo" de la clase String de javascript para meterle nueva funcionalidad

Para que funcione el xxx.toString(16), el objeto xxx DEBE SER un número, no un string.

El resto creo que ya lo entenderás al leerlo.

Última edición por marlanga; 05/02/2015 a las 12:10