Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/04/2014, 12:39
Avatar de legomolina
legomolina
 
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Arrastrar divs

Hola, tengo el siguiente código:
Código Javascript:
Ver original
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <title></title>
  5.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  6.         <style>
  7.             .estiloCuadro {
  8.                width: 10em;
  9.                border: solid red;
  10.                position: absolute;
  11.                top: 100px;
  12.                left: 30px;
  13.                cursor: pointer;
  14.                /*Deshabilitar selección de texto*/
  15.                -moz-user-select: none;     /* Mozilla */
  16.                -khtml-user-select: none;   /* Chrome */    
  17.                -o-user-select: none;       /* Opera */
  18.             }
  19.         </style>
  20.         <script type="text/javascript">
  21.             var xInic, yInic;
  22.             var estaPulsado = false;
  23.            
  24.             function ratonPulsado(evt) {
  25.                 //Obtener la posición de inicio
  26.                 xInic = evt.clientX;
  27.                 yInic = evt.clientY;    
  28.                 estaPulsado = true;
  29.                 //Para Internet Explorer: Contenido no seleccionable
  30.                 document.getElementById("cuadro_barra").unselectable = true;
  31.             }
  32.            
  33.             function ratonMovido(evt) {
  34.                 if(estaPulsado) {
  35.                     //Calcular la diferencia de posición
  36.                     var xActual = evt.clientX;
  37.                     var yActual = evt.clientY;    
  38.                     var xInc = xActual-xInic;
  39.                     var yInc = yActual-yInic;
  40.                     xInic = xActual;
  41.                     yInic = yActual;
  42.                    
  43.                     //Establecer la nueva posición
  44.                     var elemento = document.getElementById("cuadro"); //lo que se va a mover
  45.                     var position = getPosicion(elemento);
  46.                     elemento.style.top = (position[0] + yInc) + "px";
  47.                     elemento.style.left = (position[1] + xInc) + "px";
  48.                 }
  49.             }
  50.            
  51.             function ratonSoltado(evt) {
  52.                 estaPulsado = false;
  53.             }
  54.            
  55.             /*
  56.              * Función para obtener la posición en la que se encuentra el
  57.              * elemento indicado como parámetro.
  58.              * Retorna un array con las coordenadas x e y de la posición
  59.              */
  60.             function getPosicion(elemento) {
  61.                 var posicion = new Array(2);
  62.                 if(document.defaultView && document.defaultView.getComputedStyle) {
  63.                     posicion[0] = parseInt(document.defaultView.getComputedStyle(elemento, null).getPropertyValue("top"))
  64.                     posicion[1] = parseInt(document.defaultView.getComputedStyle(elemento, null).getPropertyValue("left"));
  65.                 } else {
  66.                     //Para Internet Explorer
  67.                     posicion[0] = parseInt(elemento.currentStyle.top);            
  68.                     posicion[1] = parseInt(elemento.currentStyle.left);              
  69.                 }      
  70.                 return posicion;
  71.             }
  72.         </script>
  73.     </head>
  74.     <body>
  75.         <div id="cuadro" class="estiloCuadro"><div id="cuadro_barra">barra</div>Arrastra con el ratón<br>para mover este cuadro</div><!-- Siendo una barra tipo Windows desde donde se arrastra todo el div (no he copiado su css) -->
  76.  
  77.         <script type="text/javascript">
  78.             var el = document.getElementById("cuadro_barra"); //desde donde se mueve
  79.             if (el.addEventListener){
  80.                 el.addEventListener("mousedown", ratonPulsado, false);
  81.                 el.addEventListener("mouseup", ratonSoltado, false);
  82.                 document.addEventListener("mousemove", ratonMovido, false);
  83.             } else { //Para IE
  84.                 el.attachEvent('onmousedown', ratonPulsado);
  85.                 el.attachEvent('onmouseup', ratonSoltado);
  86.                 document.attachEvent('onmousemove', ratonMovido);
  87.             }            
  88.         </script>  
  89.     </body>
  90. </html>
Sirve para arrastrar el div cuadro. El problema es que solo vale para ese. Yo quisiera que se moviesen, por ejemplo, el div cuadro2, el cuadro3,... cuadron que son iguales que el primero pero cambian su id y la de la barra. He probado a enviar por parametros a la funcion ratonMovido el div a mover cambiando:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.             var el = document.getElementById("cuadro_barra"); //desde donde se mueve
  3.             var div=el.id.split("_");
  4.             if (el.addEventListener){
  5.                 el.addEventListener("mousedown", ratonPulsado, false);
  6.                 el.addEventListener("mouseup", ratonSoltado, false);
  7.                 document.addEventListener("mousemove", function(){ratonMovido(div[0]):}, false);
  8.             } else { //Para IE
  9.                 el.attachEvent('onmousedown', ratonPulsado);
  10.                 el.attachEvent('onmouseup', ratonSoltado);
  11.                 document.attachEvent('onmousemove', ratonMovido);
  12.             }            
  13.         </script>  
  14.  
  15. function ratonMovido(div,evt) {
  16.                 if(estaPulsado) {
  17.                     //Calcular la diferencia de posición
  18.                     var xActual = evt.clientX;
  19.                     var yActual = evt.clientY;    
  20.                     var xInc = xActual-xInic;
  21.                     var yInc = yActual-yInic;
  22.                     xInic = xActual;
  23.                     yInic = yActual;
  24.                    
  25.                     //Establecer la nueva posición
  26.                     var elemento = document.getElementById(div); //lo que se va a mover
  27.                     var position = getPosicion(elemento);
  28.                     elemento.style.top = (position[0] + yInc) + "px";
  29.                     elemento.style.left = (position[1] + xInc) + "px";
  30.                 }
  31.             }
Pero no se porque en la funcion ratonMovido, confunde el parametro div con el evt. Creo que solucionando eso lo tendría pero no tengo ni idea de como hacerlo.
Gracias