Foros del Web » Programando para Internet » Javascript »

if object.className... pero tiene mas de un className?

Estas en el tema de if object.className... pero tiene mas de un className? en el foro de Javascript en Foros del Web. Tengo un codigo que se podria representar de esta manera: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original if ( objeto. className == 'ocultable' ) { ...
  #1 (permalink)  
Antiguo 04/01/2011, 18:55
Avatar de Tecktonikrazy  
Fecha de Ingreso: enero-2010
Mensajes: 224
Antigüedad: 14 años, 3 meses
Puntos: 3
Pregunta if object.className... pero tiene mas de un className?

Tengo un codigo que se podria representar de esta manera:

Código Javascript:
Ver original
  1. if(objeto.className == 'ocultable')
  2. {objeto.style.visibilty = 'hidden'; }

Código HTML:
<div class="ocultable cajas"></div> 
Si el objeto pertenece a la clase "ocultable" el objeto se puede ocultar, pero que pasa si el objeto tambien debe pertenecer a otra clase como "cajas"? se pueden le pueden dar dos o mas clases a un objeto en su atributo class pero javascript las toma en cuenta como una sola y entonces la funcion no funciona, como puedo solucionar este problema?
__________________
I LOVE HTML (How To Make Love)
  #2 (permalink)  
Antiguo 04/01/2011, 19:06
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: if object.className... pero tiene mas de un className?

Usa expresiones regulares.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 04/01/2011, 19:19
Avatar de Tecktonikrazy  
Fecha de Ingreso: enero-2010
Mensajes: 224
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: if object.className... pero tiene mas de un className?

Mmmmmmmmm un ejemplo?
__________________
I LOVE HTML (How To Make Love)
  #4 (permalink)  
Antiguo 04/01/2011, 19:21
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: if object.className... pero tiene mas de un className?

Podes mirar como lo hacen las diferentes librerias,

jQuery:

Código Javascript:
Ver original
  1. hasClass: function( selector ) {
  2.     var className = " " + selector + " ";
  3.     for ( var i = 0, l = this.length; i < l; i++ ) {
  4.        if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
  5.          return true;
  6.        }
  7.     }
  8.     return false;
  9. }

Prototype:

Código Javascript:
Ver original
  1. hasClassName: function(element, className) {
  2.     if (!(element = $(element))) return;
  3.     var elementClassName = element.className;
  4.     return (elementClassName.length > 0 && (elementClassName == className ||
  5.       new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
  6.   }

Saludos.
  #5 (permalink)  
Antiguo 04/01/2011, 19:32
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: if object.className... pero tiene mas de un className?

O más simplemente:
Código Javascript:
Ver original
  1. if(/\bocultable\b/.test(objeto.className))
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #6 (permalink)  
Antiguo 04/01/2011, 19:37
Avatar de Tecktonikrazy  
Fecha de Ingreso: enero-2010
Mensajes: 224
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: if object.className... pero tiene mas de un className?

No me gusta usar librerias, no por ahora que estoy aprendiendo, y no te entiendo muy bien _cronos2
__________________
I LOVE HTML (How To Make Love)
  #7 (permalink)  
Antiguo 04/01/2011, 19:44
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: if object.className... pero tiene mas de un className?

Tecktonikrazy, donde dije que utilices una libreria ?, lo que te comente era para que vieras como lo hacen y tuvieras una idea.
  #8 (permalink)  
Antiguo 04/01/2011, 19:46
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: if object.className... pero tiene mas de un className?

¿Qué no entiendes?
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #9 (permalink)  
Antiguo 04/01/2011, 20:04
Avatar de Tecktonikrazy  
Fecha de Ingreso: enero-2010
Mensajes: 224
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: if object.className... pero tiene mas de un className?

Ya investigue un poquito y entendi, pero no funciona. Miren enrealidad esto es lo que trato de hacer, que los objetos con las class "drag" sean arrastrables, aqui esta el codigo:

Código HTML:
Ver original
  1. <script language="JavaScript1.2">
  2. var ie=document.all;
  3. var nn6=document.getElementById&&!document.all;
  4. var isdrag=false;
  5. var x,y;
  6. var dobj;
  7. function movemouse(e){
  8. if (isdrag){
  9. dobj.style.left = nn6 ? tx + e.clientX - x : tx + event.clientX - x;
  10. dobj.style.top  = nn6 ? ty + e.clientY - y : ty + event.clientY - y;
  11. return false;}
  12. }
  13.  
  14. function selectmouse(e){
  15. var fobj       = nn6 ? e.target : event.srcElement;
  16. var topelement = nn6 ? "HTML" : "BODY";
  17.  
  18. while (fobj.tagName != topelement && fobj.className != "drag"){
  19. fobj = nn6 ? fobj.parentNode : fobj.parentElement;
  20. }
  21.  
  22. if (fobj.className == "drag"){
  23. isdrag = true;
  24. dobj = fobj;
  25. tx = parseInt(dobj.style.left+0);
  26. ty = parseInt(dobj.style.top+0);
  27. x = nn6 ? e.clientX : event.clientX;
  28. y = nn6 ? e.clientY : event.clientY;
  29. document.onmousemove=movemouse;
  30. return false;}
  31. }
  32.  
  33. document.onmousedown=selectmouse;
  34. document.onmouseup=new Function("isdrag=false");
  35.  
  36. <div style="position:absolute;width:100px;height:100px;background:#ABABAB;" class="drag">
  37. <div style="position:absolute;width:80px;height:80px;background:#BCBCBC;" class="drag">
  38. <div style="position:absolute;width:60px;height:60px;background:#CDCDCD;" class="drag">
  39. <div style="position:absolute;width:40px;height:40px;background:#DEDEDE;" class="drag">
  40. <div style="position:absolute;width:20px;height:20px;background:#EFEFEF;" class="drag">
  41. </div>
  42. </div>
  43. </div>
  44. </div>
  45. </div>
__________________
I LOVE HTML (How To Make Love)
  #10 (permalink)  
Antiguo 04/01/2011, 20:05
Avatar de Tecktonikrazy  
Fecha de Ingreso: enero-2010
Mensajes: 224
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: if object.className... pero tiene mas de un className?

Creo que lo de _cronos2 se aplicaria en la linea 22 pero no me funciona
__________________
I LOVE HTML (How To Make Love)
  #11 (permalink)  
Antiguo 04/01/2011, 20:13
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: if object.className... pero tiene mas de un className?

Pues a mí sime funciona
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #12 (permalink)  
Antiguo 04/01/2011, 20:19
Avatar de Tecktonikrazy  
Fecha de Ingreso: enero-2010
Mensajes: 224
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: if object.className... pero tiene mas de un className?

Como le hiciste? lo que yo hice en la line 22 fue esto:

if (/\bdrag\b/.test(fobj.className)){

y si tengo por ejemplo:

<div class="drag"></div>

si funciona pero si agrego otra clase no:

<div class="drag cajas"></div>
__________________
I LOVE HTML (How To Make Love)
  #13 (permalink)  
Antiguo 04/01/2011, 20:41
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: if object.className... pero tiene mas de un className?

Haz un alert para ver cuál es su className, porque a mí me sigue funcionando xD
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #14 (permalink)  
Antiguo 05/01/2011, 10:57
Avatar de Tecktonikrazy  
Fecha de Ingreso: enero-2010
Mensajes: 224
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: if object.className... pero tiene mas de un className?

Ya logre lo que queria y funciona a la perfeccion, aqui les dejo el codigo y gracias a todos =D


Código HTML:
Ver original
  1. <script language="JavaScript1.2">
  2. var ie=document.all;
  3. var nn6=document.getElementById&&!document.all;
  4. var isdrag=false;
  5. var x,y;
  6. var dobj;
  7. function movemouse(e){
  8. if (isdrag){
  9. dobj.style.left = nn6 ? tx + e.clientX - x : tx + event.clientX - x;
  10. dobj.style.top  = nn6 ? ty + e.clientY - y : ty + event.clientY - y;
  11. return false;}
  12. }
  13.  
  14. function selectmouse(e){
  15. var fobj       = nn6 ? e.target : event.srcElement;
  16. var topelement = nn6 ? "HTML" : "BODY";
  17. var fobjClass = /\bdrag\b/.test(fobj.className);
  18.  
  19. while (fobj.tagName != topelement && fobj.className == fobjClass){
  20. fobj = nn6 ? fobj.parentNode : fobj.parentElement;
  21. }
  22.  
  23. fobj.style.position = 'relative';
  24. if (fobjClass){
  25. isdrag = true;
  26. dobj = fobj;
  27. tx = parseInt(dobj.style.left+0);
  28. ty = parseInt(dobj.style.top+0);
  29. x = nn6 ? e.clientX : event.clientX;
  30. y = nn6 ? e.clientY : event.clientY;
  31. document.onmousemove=movemouse;
  32. return false;}
  33. }
  34.  
  35. document.onmousedown=selectmouse;
  36. document.onmouseup=new Function("isdrag=false");
  37.  
  38. <div style="width:100px;height:100px;background:#ABABAB;" class="drag cajas">
  39. <div style="position:absolute;width:80px;height:80px;background:#BCBCBC;" class="drag">
  40. <div style="position:absolute;width:60px;height:60px;background:#CDCDCD;" class="drag">
  41. <div style="position:absolute;width:40px;height:40px;background:#DEDEDE;" class="drag">
  42. <div style="position:absolute;width:20px;height:20px;background:#EFEFEF;" class="drag">
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
__________________
I LOVE HTML (How To Make Love)

Etiquetas: classname, mas
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 21:03.