IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

pb dans un drag and drop lors de sélection d'un élément a bouger


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 77
    Par défaut pb dans un drag and drop lors de sélection d'un élément a bouger
    Bonjour à tous,

    tout d'abord merci de votre aide.
    J'ai un soucis avec un script qui me permettrais de faire un drag & drop sur un élément d'une page.

    function beginDrag(bloc,e){
    isDragging = true;
    objectToDrag = bloc;
    objectToDrag.style.setProperty("background-color", "red", "");
    // objectToDrag.style.background-color = "red";
    getPositionCurseur(e);
    ecartX = curX - parseInt(objectToDrag.style.left);
    ecartY = curY - parseInt(objectToDrag.style.top);
    }
    <div id="bloc" onmousedown="beginDrag(this,event);" onmousemove="drag(event);" onmouseup="endDrag();" ></div>
    Visiblement, j'ai 2 pb :
    • quand je fais objectToDrag.style.background-color ... , il ne le prend pas en compte et je suis donc obligé de passer par un setProperty, pourquoi?
    • donc forcément, lorsque je j'ai un ecartX = curX - parseInt(objectToDrag.style.left);, il n'est pas capable d'en donner la valeur

    quelqu'un sait pourquoi?

    Merci bcp

  2. #2
    Membre éprouvé Avatar de lalouve
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2004
    Messages : 128
    Par défaut
    Il faudrait un peu plus de code...

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut
    au lieu de background-color essaye backgroundColor

    Voici un code de drag 'n drop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <html>
        <head>
        </head>
        <body>
            <div id="maDiv" style="position:absolute; width:200px; height:150px">
                Une div pour des essais !
            </div>
            <script>
                var maDiv = document.getElementById('maDiv');
                maDiv.style.backgroundColor = 'green';
                maDiv.onmousedown = beginDrag;
                var curX, curY;
                var flagDrag = false;
     
                function beginDrag(e) {
                    maDiv.style.backgroundColor = 'red';
                    curX = e.clientX-maDiv.offsetLeft;
                    curY = e.clientY-maDiv.offsetTop;
                    flagDrag = true;
                    maDiv.onmousemove = drag;
                    maDiv.onmouseup = endDrag;                
                }
     
                function drag(e) {    
                    if(flagDrag) {
                        maDiv.style.left = e.clientX - curX;
                        maDiv.style.top = e.clientY - curY;
                    }
                }
     
                function endDrag(e) {
                    flagDrag = false;
                    maDiv.style.backgroundColor = 'green';
                }
            </script>
        </body>
    </html>
    Ne fonctionne que sous FireFox, pas encore eu le temps d'assurer la compatibilité sous tous les navigateurs !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 77
    Par défaut
    Alors je vous balance tout mon code permettant le drg&drop :
    var isDragging = false;
    var objectToDrag;
    var obj;
    var ecartX;
    var ecartY;
    var curX;
    var curY;

    function positionne(p_id, p_posX, p_pos_Y){
    document.getElementById(p_id).style.left = p_posX;
    document.getElementById(p_id).style.top = p_pos_Y;
    }

    function getPositionCurseur(e){
    //ie
    if(document.all){
    curX = event.clientX;
    curY = event.clientY;
    }

    //netscape 4
    if(document.layers){
    curX = e.pageX;
    curY = e.pageY;
    }

    //mozilla
    if(document.getElementById){
    curX = e.clientX;
    curY = e.clientY;
    }
    }

    function beginDrag(bloc,e){
    isDragging = true;
    objectToDrag = document.getElementById(bloc);
    getPositionCurseur(e);
    ecartX = curX - parseInt(objectToDrag.style.left);
    ecartY = curY - parseInt(objectToDrag.style.top);
    }

    function drag(e){
    var newPosX;
    var newPosY;
    if(isDragging == true) {
    getPositionCurseur(e);
    newPosX = curX - ecartX;
    newPosY = curY - ecartY;

    objectToDrag.style.left = newPosX + 'px';
    objectToDrag.style.top = newPosY + 'px';
    }
    }

    function endDrag(){
    isDragging = false;
    }
    <body>
    <div id="bloc" onmousedown="beginDrag(this.id,event);" onmousemove="drag(event);" onmouseup="endDrag();" >
    déplacez moi !
    </div>
    <script type="text/javascript">
    // <![CDATA[
    //positionnement des divs
    positionne('bloc', '10px', '100px');
    // ]]>
    </script>
    </body>
    </html>
    Alors comme vous pouvez le voir, j'ai une fonction "postitionne" qui permet de placer mon bloc div au tout début. Etrangement, si je ne fixe pas ce bloc à l'aide de cette fonction, rien ne marche. En effet, si je teste sans le script de position, les attributs top et left du div ne seront pas accessibles, bien que définis dans ma css... et par conséquent je ne pourrais pas le faire bouger selon le mvnt de la souris...
    La je seche, je ne comprend vraiment pas quel est le pb ... surtout que ce que je fait dans 'positionne' est refait par la suite

Discussions similaires

  1. Affichage dans une JList lors d'un drag and drop
    Par Stefounette dans le forum Général Java
    Réponses: 2
    Dernier message: 05/05/2010, 09h36
  2. RJS - Récuperer la liste glisée dans le drag and drop
    Par devmassi dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 16/10/2007, 10h33
  3. Drag and drop dans un TTreeView
    Par BigBenQ dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/10/2005, 14h57
  4. Réponses: 4
    Dernier message: 01/10/2005, 11h03
  5. Savoir ou est deposé un fichier dans un drag and drop ?
    Par mkdual dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 24/08/2005, 17h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo