Bilderscript + Drag'n Drop

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bilderscript + Drag'n Drop

    Hallo!

    Ich möchte für ein Bilderscript einen Javascript schreiben, mit dem man Bilder per Drag'n Drop sortieren kann.
    Dafür soll man das zu verschiebene Bild anklicken (Maus gedrückt halten) und dann auf ein anderes ziehen können. Später soll dann das zuerst angeklickte Bild hinter (oder vor, das muss ich mir noch überlegen) dem Bild landen, auf dem man die Maus wieder losgelassen hat.

    Das ganze sieht bisher folgendermaßen aus:
    PHP-Code:
            //globale Variable, die die ID's der betroffenen Bilder
            
    speichern
            
    var downimg;
            var 
    upimg;

            
    //Diese Funktion soll zunächst nur die Positionen der
            
    beiden betroffenen Bilder ausgeben
        
    function changepos () {
            
    window.alert (downimg);
            
    window.alert (upimg);
        }
        
            
    //Handlerfunktion für das mousedown-Event
        
    function mdown (id) {
            if (
    id) {
                
    downimg id;
            }
        }

            
    //Handlerfunktion für das mouseup-Event
        
    function mup (id) {
            if (
    downimg && id) {
                
    upimg id;
                
    changepos ();
            }
        }

    Im Body steht folgender Html-Code (vereinfacht):
    <
    table>
     <
    tr>
      <
    td>
       <
    img src="xxx.jpg" id="1" onmousedown="mdown(this.id)" onmouseup="mup(this.id)">
      </
    td>
      <
    td>
       <
    img src="yyy.jpg" id="2" onmousedown="mdown(this.id)" onmouseup="mup(this.id)">
      </
    td>
     </
    tr>
    </
    table
    Das ganze funktioniert auch im Prinzip. Wenn man auf ein Bild klickt und die Maus wieder loslässt (ohne sie bewegt zu haben!!!!), dann wird einem zweimal die id des betreffenden Bildes ausgegeben. Wie schon angedeutet funktioniert es aber nicht mehr, sobald man die gedrückte Maus auch nur einen Millimeter bewegt. Dann verwandelt sich der Mauszeiger in ein "Verbotsschild" (durchgetrichener Kreis) und beim hochlassen der Maustaste passiert gar nichts mehr!
    Zum Testen habe ich Firefox 2.0 verwendet. Hat jemand ne Ahnung, wie man dieses Problem lösen kann??

    Wär echt dankbar für Hilfe, denn beim googlen habe ich leider nichts gefunden!

  • #2
    Re: Bilderscript + Drag'n Drop

    Ich sehe dich nur den mousedown- und mouseup-Event behandeln - aber den/die, die beim "ziehen" eintreten, überhaupt nicht ...

    Da gibt's doch noch Dinger wie ondragstart, -over, -exit, -stop, -....
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      ok, die kenn ich noch gar nicht )
      Naja, bin nicht sonen JavaScript-Freak...
      Werd mich mal belesen. Danke für den Hinweis!

      Kommentar


      • #4
        Habe gerade mal gegooglet. Diese Events werden nur vom IE unterstützt. Damit sind sie für mich leider unbrauchbar. Hat noch jemand ne Idee??

        Kommentar


        • #5
          http://aktuell.de.selfhtml.org/artik...l/draganddrop/

          Kommentar


          • #6
            Da war ich auch schon.
            Das hilft mir leider auch nicht weiter, weil ich aus folgendem Grund nicht über die Mausposition arbeiten möchte:
            Da die Tabelle mit den Bildern später irgendwo mitten in einer Seite liegen wird kann ich leider die Positionen der einzelnen Bilder nicht bestimmen. Daher MUSS es irgendwie ohne die Mausposition funktionieren!

            Kommentar


            • #7
              hm.. warum spielt das eine rolle, wo du es letzten endes einsetzst?

              Kommentar


              • #8
                Ich hab mir da schon länger Gedanken drüber gemacht und so ganz unerfahren in Sachen Webprogrammierung bin ich auch nicht. Es ist ziemlich kompliziert zu erklären, warum ich es nicht so machen möchte, wie in dem Script auf der Self-Html-Seite. Da müsste ich irgendwie meine Gedankengänge der letzten Wochen wiedergeben. Ich will mal ganz kurz erläutern, wie das eingesetzt werden soll:
                Über einen Javascript, der bereits fertig geschrieben ist und auch funktioniert, soll diese Tabelle, die die Bilder enthält generiert werden. Dieser Javascript erhält zu Beginn ein global deklariertes Array, das alle Bilder und deren Reihenfolge enthält. Auf dessen Grundlage wird dann nach dem Laden der Seite diese Tabelle per Javascript in einen div-Tag reingeschrieben. Wenn der Benutzer nun ein Bild anklickt merkt der Javascript sich die ID dieses Bildes. Zieht er nun das Bild (einen optischen Effekt werde ich da noch reinbasteln, das ist dann nicht das Problem) und lässt es über einem anderen Bild los, dann merkt der Javascript sich auch die ID dieses 2. Bildes. Daraufhin bastelt er das Array mit den Bildern so um, dass das 1. Bild nun in der Reihenfolge hinter dem 2. Bild steht. Dann löscht er alles, was in diesem div-Tag steht (die Tabelle mit den Bildern) und generiert sie auf Grundlage des modifizierten Arrays neu. Nun steht also sowohl optisch, als auch im Array das 2. Bild an seiner neuen Position. Zum Schluss wird dieses Array an ein php-Script übergeben, welches dann entsprechende Änderungen in einer DB vornimmt.
                Diese Lösung erschien mir als die praktikabelste und hakt momentan nur an der Eigenschaft des Browsers dem Clienten unbedingt signalisieren zu müssen, dass man das Bild, womit er natürlich eigentlich auch recht hat, nicht verschieben kann. Dabei scheint er unglücklicherweise auch noch den Javascript zu blockieren!
                Meine eigentliche Frage ist also einfach nur, wie man das unterbinden kann!

                Kommentar


                • #9
                  Schau dir ein paar solcher Scripte an - eins wurde dir bereits genannt, zahlreiche weitere findet die Suchmaschine deiner Wahl sicherlich für dich - und schau dir dort ab, wie's geht.

                  Eine plausible Erklärung dafür, warum du nicht mit der Mausposition arbeiten können solltest, habe ich in deinem "Gedankengang" nicht ausmachen können.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    schaust du dir mal die seite
                    www.walterzorn.de
                    an..

                    klasse bibliothek für drag&drop mit javascript zum lernen und abschauen...

                    funktioniert mit den meisten browsern...

                    greetz, high
                    Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                    When everything else fails, manipulate the data...
                    Beschriftungen / Großformatdruck / Werbemittel

                    Kommentar


                    • #11
                      Oder script.aculo.us. Einfacher gehts wirklich nicht, du bindest das script ein, gibst den Sachen, die "draggable" sein sollen, eine Id, und kannst dann mit
                      Code:
                      new Draggable('element_id');
                      das ganze erledigen - funzt in fast allen browsern, und man kann noch etliche Effekte und Funktionen dazu einrichten.

                      Sowas zum Beispielhttp://wiki.script.aculo.us/scriptac...ableFloatsDemo wäre ohne das Framework ein Sack voll Arbeit.
                      ich glaube

                      Kommentar

                      Lädt...
                      X