Foros del Web » Programando para Internet » Javascript »

2: expresion regular y getAttribute('style') trae en RGB :(

Estas en el tema de 2: expresion regular y getAttribute('style') trae en RGB :( en el foro de Javascript en Foros del Web. Hola gente, tengo una expresión regular ": [^;]*;" que me toma perfecto cuando un string tiene :#FFFFFF; pero no funciona cuando el string tiene : ...
  #1 (permalink)  
Antiguo 25/01/2009, 12:13
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
2: expresion regular y getAttribute('style') trae en RGB :(

Hola gente, tengo una expresión regular

": [^;]*;"

que me toma perfecto cuando un string tiene

:#FFFFFF;

pero no funciona cuando el string tiene

: rgb(0, 102, 153);

y debería funcionar, si le estoy diciendo que capture todo lo que no sea punto y coma...

Gracias de antemano !

Saludos
PD: El problema se origina al usar getAttribute('style') en FF trae el color en formato RGB cuando en verdad lo tengo en #FFFFFF. ¿alguien sabe como traer directamente el código en #FFFFFF ? eso me solucionaría todo el problema
__________________
Esteban Quintana

Última edición por monoswim; 25/01/2009 a las 12:22
  #2 (permalink)  
Antiguo 25/01/2009, 13:13
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: 2: expresion regular y getAttribute('style') trae en RGB :(

Así funciona:
Código:
<script>
var exp=': rgb(0, 102, 153);';
var pat=new RegExp('(:[^;]*);')
alert(exp.match(pat)[1])
</script>
No sé si es lo que querías.
  #3 (permalink)  
Antiguo 25/01/2009, 13:39
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 19 años, 2 meses
Puntos: 19
Respuesta: 2: expresion regular y getAttribute('style') trae en RGB :(

Código javascript:
Ver original
  1. function toHex(R, G, B)
  2.         {
  3.             var Lets='ABCDEF';
  4.             var R=rHex(toLet(R).m)+rHex(toLet(R).p);
  5.             var G=rHex(toLet(G).m)+rHex(toLet(G).p);
  6.             var B=rHex(toLet(B).m)+rHex(toLet(B).p);
  7.            
  8.             var Ret=('#'+R+G+B).toUpperCase();
  9.             return(Ret);
  10.            
  11.             function toLet(Ch4r)
  12.             {
  13.                 var c0nd=/\./;
  14.                 for(var i=0; i<=15; ++i)
  15.                 {
  16.                     var tCh4r=((Ch4r-i)/16).toString();
  17.                     if(!tCh4r.match(c0nd)) return{ m: tCh4r, p: i };
  18.                 }
  19.             }
  20.             function rHex(Ch4r)
  21.             {      
  22.                 for(var i=0; Lets[i]; ++i) { if(Ch4r==(10+i)) return(Lets[i]); }
  23.                 return(Ch4r.toString());
  24.             }
  25.         }

No me funciona el cerebro en este momento como para pensar en una forma mas corta... lo tengo hace mucho eso... seguro hay una forma mas corta... despues la subire... pero que funciona funciona..

  #4 (permalink)  
Antiguo 25/01/2009, 20:20
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Respuesta: 2: expresion regular y getAttribute('style') trae en RGB :(

Cita:
No sé si es lo que querías.
Es exactamente lo que quería, igual probando tu código me di cuenta que el mio no funcionaba por un simple espacio en blanco

A fernand0, gracias por el código, pero no entiendo ni J...además no quiero colocar códigos raros, mejor lo fácil y standard

Saludos y gracias a ambos...
PD: Si alguien sabe como traer el atributo style sin formato RGB se los agradecería mucho !
__________________
Esteban Quintana
  #5 (permalink)  
Antiguo 26/01/2009, 01:21
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: 2: expresion regular y getAttribute('style') trae en RGB :(

Hola Esteban :

Aunque no es exactamente lo que quieres (no sé si tiene respuesta), se puede definir una función "rgb" con los 3 componentes como parámetro...

Código:
<script type="text/javascript">
 var _h = "0123456789ABCDEF";
function rgb(rr, gg, bb) {
 _RGB = "#" + _h.charAt(rr / 16) + _h.charAt(rr % 16);
 _RGB += _h.charAt(gg / 16) + _h.charAt(gg % 16);
 _RGB += _h.charAt(bb / 16) + _h.charAt(bb % 16);
 return _RGB;
}
</script>
Y como ejemplo:

<body style="color: #eeeeaa" onload="c = document.body.style.color;
alert((c.charAt(0) == '#') ? c:eval(c));">

No me gusta usar eval, pero este caso es una excepción...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 26/01/2009, 03:21
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 19 años, 2 meses
Puntos: 19
Respuesta: 2: expresion regular y getAttribute('style') trae en RGB :(

monoswim.. es una function para pasar rgb a HEX(#FFF).. pero bastante "tonta".. ahi caricatos te paso la forma "inteligente"..

  #7 (permalink)  
Antiguo 26/01/2009, 06:11
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Respuesta: 2: expresion regular y getAttribute('style') trae en RGB :(

Disculpen mi falta de información, el tema es que mediante la función getAttribute('style') estoy tomando los estilos de los tags para editarlos...

me toma todos los estilos en un string y me los coloca en un input text para editarlos...

Por eso no se como pasarlo a #, no tengo directamente un estilo, sino varios y hasta puede aparecer en color, background, border y todas las propiedades que definan algún color...

Saludos y gracias a todos por ayudarme...
__________________
Esteban Quintana
  #8 (permalink)  
Antiguo 26/01/2009, 09:08
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: 2: expresion regular y getAttribute('style') trae en RGB :(

Hola:

Cita:
Iniciado por Fernand0 Ver Mensaje
monoswim.. es una function para pasar rgb a HEX(#FFF).. pero bastante "tonta".. ahi caricatos te paso la forma "inteligente"..

Cuando vi tu código me trabé un poco por la complejidad, pero ahora veo que hace lo mismo que el mío, aunque no termino de entenderlo... te comento una anécdota de cuando estudiaba formación profesional (la carrera: técnico especialista en informática de gestión)... mi profe nos enseñó su manera de convertir un número en su "string"... ya sabes, en Pascal, que es "fuetemente tipado"... y nos desarrolló un rollazo con un switch case que aburría, y en el siguiente exámen preguntó justamente eso..., y mi respuesta fué una función recursiva de 4 líneas que al corregirla la pasó por alto y me suspendió... claró que reclamé, y usó su número de pruebas para (comprobar que mi código "tenía" que fallar) y en conclusión, terminó aprendiendo de su alumno...

Cita:
Iniciado por monoswim Ver Mensaje
Disculpen mi falta de información, el tema es que mediante la función getAttribute('style') estoy tomando los estilos de los tags para editarlos...

me toma todos los estilos en un string y me los coloca en un input text para editarlos...

Por eso no se como pasarlo a #, no tengo directamente un estilo, sino varios y hasta puede aparecer en color, background, border y todas las propiedades que definan algún color...

Saludos y gracias a todos por ayudarme...
Esteban: No tengo idea de tu intención, pero también puede estar en un input esa función, pero si quisieras editar colores, se te complicaría un poco la aplicación... de todos modos, en la página de mi perfil hay un destripador y un inspector DOM donde se pueden editar estilos y atributos... si fuese algo más complejo no dudes en plantearlo que en este foro hay unos pocos "maestros"...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 26/01/2009, 10:18
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 19 años, 2 meses
Puntos: 19
Respuesta: 2: expresion regular y getAttribute('style') trae en RGB :(

monoswim
O sea.. vos queres obtener el color en HEX directamente... que yo sepa no se puede directamente obtenerlo... porque automaticamente cuando vos lo seteas el browser lo pasa a RGB...

Lo que podes hacer es usar split(u otra herramienta que maneje texto) para obtener los valores de RGB de la obtencion del color(el getAttri)....
Una vez que obtenes los 3 colores los pones en la function que puso caricatos.. y te va a devolver el color en HEX

caricatos
Ahm.. no entendi bien la relacion(lo que me quisiste decir) de la anecdota.. pero interpreto intencion de motivacion... pense mi function en base al calculo de hex a rgb... e hice lo inverso... pero la hice hace mucho tendria que cambiarla bastante
gracias

  #10 (permalink)  
Antiguo 26/01/2009, 11:20
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Respuesta: 2: expresion regular y getAttribute('style') trae en RGB :(

ok, gracias a ambos, creo que terminaré usando la función de pasaje de RGB a HEX...será un poco más de código pero bueno, tampoco tanto...

Saludos
__________________
Esteban Quintana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:46.