[JavaScript] tablerows vertauschen

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

  • [JavaScript] tablerows vertauschen

    Im Adminmenu soll man alle Bilder einer Galerie in einer Tabelle aufgelistet sehen.
    Jede Zeile hat ein Checkfeld.

    Ich habe mir jetzt zum Ziel gemacht, dass man auf einen Link klickt und dann per javascript zB alle "gecheckten" Zeilen um eine Zeile nach oben verschoben werden sollen.


    Ich bin das bisher nur so weit angegangen, dass ich eine Funktion schreiben will die einfach 2 Zeilen gegeneinander austauscht.

    Bei dem Austausch werden einfach die Inhalte (innerHTML) gegeneinander ersetzt.

    Jetzt zu meinem Problem:
    Wenn man eine Checkbox anwählt und auf Verschieben klickt muss das script ja wissen an welcher Position die Zeile ist. Die Position soll in einem Hiddenfeld (im Beispiel als text-Feld) gespeichert werden.

    Am besten wärs, wenn ich irgendwie in der change-Funktion an die ID-Nummer der Zeile kommen würde. Und damit dann das Feld mit der Positionsangabe handlen kann.
    Hätte einer eine Idee wie ich das machen könnte?

    hier wär der Link
    Zuletzt geändert von em-!x; 20.10.2005, 01:19.


  • #2
    Re: [JavaScript] tablerows vertauschen

    Original geschrieben von em-!x
    Wenn man eine Checkbox anwählt und auf Verschieben klickt muss das script ja wissen an welcher Position die Zeile ist. Die Position soll in einem Hiddenfeld (im Beispiel als text-Feld) gespeichert werden.
    Warum in einem hidden field?
    Du brauchst den Wert nicht in deinem Formular, sondern in Javascript - also lege ihn doch gleich in einer JS-Var ab.

    Am besten wärs, wenn ich irgendwie in der change-Funktion an die ID-Nummer der Zeile kommen würde.
    Wenn du die IDs für Tabellenzeilen und Checkboxen korrespondierend aufbaust, ist das doch gar kein Problem.
    Code:
    <tr id="[b]zeile15[/b]"><td>...<input type="checkbox" id="[b]checkbox15"[/b] ...>
    Beim Klick auf die Checkbox greifst du auf deren ID zu, das ist "checkbox15". Von diesem Wert musst du lediglich das "checkbox" abschneiden, und "zeile" davorsetzen - dann hast du die ZeilenID "zeile15".

    Alternativ wäre es natürlich auch möglich, sich von der Checkbox aus nach oben zu hangeln, um dann direkt die ID der Zeile abzufragen - über parentNode etc.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Das Problem sind nicht die Zeilen die angecheckt wurden, sondern die restlichen Zeilen, deren ID ich ja auch benötige um sie zB nach unten zu schieben...

      Mit den nodes hab ichs leider nicht so aber ich versuchs heute abend trotzdem mal

      vielen dank so weit

      Kommentar


      • #4
        Durchnummerieren und nach dem Vertauschen die IDs wieder ändern?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Original geschrieben von em-!x
          Das Problem sind nicht die Zeilen die angecheckt wurden, sondern die restlichen Zeilen, deren ID ich ja auch benötige um sie zB nach unten zu schieben...
          Ja, die brauchst du wohl, wenn du diesen Weg gehen willst, alle dazwischen liegenden Zeilen nach unten zu "verschieben".

          Das kommt mir aber reichlich unperformat vor - da würde ich doch lieber über's DOM gehen, und nur die eine Zeile, die verschoben werden soll, an ihrer Originalposition löschen, und an der neuen wieder einfügen - createElement, appendChild/insertBefore.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            ich hätte jetzt nochmal eine Idee...

            könnte man vielleicht einfach noch eine optionlist dazu machen? Die kann man ja einfacher handhaben.

            Die selektierten Zeilen werden in der optionsliste markiert und dann dort ein Eintrag gesucht mit dem der Platz getauscht werden kann.

            Habe jetzt noch überhaupt nichts (codemäßig) geschrieben, aber vielleicht kann jemand mir ja sagen, ob das möglich, schlecht oder was auch immer ist.

            (Wie gesagt, das mit den nodes krieg ich bei gott nicht hin)

            Kommentar


            • #7
              Oh man wo hatte ich meinen Kopf...

              Habe jetzt einfach alle Positionen in einem array gespeichert und das array und die id der zeile beim tauschen geändert...

              Problem gelöst... Vielen dank

              Kommentar


              • #8
                Habe mich leider zu früh gefreut, denn das hier läuft nur im ff.

                Im IE macht er gar nichts (dem habe ich mich noch überhaupt nicht gewidmet) und im Opera ist es ganz eingenartig:

                Nach oben schieben funktioniert ganz normal wie auch im firefox, aber nach unten schieben geht genau nur ein mal.

                Bei der Suche nach dem Grund komme ich einfach nicht weiter. Hat jemand eine Idee?

                Kommentar

                Lädt...
                X