Jan: Hin- und herschieben von Werten zwischen Arrays

Hallo Leute!

Ich programmiere gerade eine webbasierte Kundendatenbank, die unter anderem auch die Sparte (also Produzent, Grosshändler, Einzelhändler,...) und dazu auch die Branche bzw. Stichwörter dazu (z.B. Rubrik Autos - PKW, LKW, Kleinlaster, KFZ-Zubehöre,...)

Bei den Branchen hätte es mein Chef gerne so, wie ich es sonst nur von Anwendungen her kenne.

Und zwar sollte ich 2 Felder haben, im linken sind alle auswählbaren Branchen gelistet, die der Kunde per Klick in das rechte Feld verweisen kann, natürlich kann er diese dann wieder aus der rechten löschen (zB. wenn er sich verklickt hat).

Im linken Feld sollten die verschobenen Elemente/Begriffe entweder verschwinden oder deaktiv werden (ich tendiere zu ersterem).

Ich muss zugeben, dass ich da ziemlich anstehe, da ich sonst mit DHTML/JavaScript nicht sehr viel am Hut habe.

Ich hätte da an 2 Arrays gedacht, die in 2 Divs aufgelistet werden. Bei Klick auf ein Array-Element wird dieses in das jeweils andere verschoben.

Eine Besonderheit dabei: Wenn ich dem rechten Feld Elemente hinzufüge werden diese noch in ein hidden-Feld eingefügt (Begriffe mit ; getrennt), damit ich diese dann in die DB eintragen kann. Bei löschen aus dem recht Feld, wird es auch aus dem hidden-Feld rausgelöscht (ich denke da an eine String-Operation, zB. Replace).

Könnte das in etwa funktionieren? Oder weiss jemand vielleicht eine bessere Lösung?

Ich muss zugeben, dass ich mich noch nicht drangesetzt habe, aber eben deswegen, weil ich nicht gleich in die komplett falsche Richtung losstarten möchte, darum warte ich lieber ein paar Tipps/Ratschläge ab ;o)

lg, Jan

  1. Hallo Jan,

    Du wirst wohl kaum unhin kommen, Dich mit DOM auseinanderzusetzen, weil jeder andere Lösungsansatz zu umständlich für komplexere Datensammlungen würde. Nach dem DOM müßtest Du lediglich

    1. auf Klick im linken Feld eine Kopie des jeweiligen Elements herstellen
    2. das Originalelement löschen
    3. die Kopie im rechten Feld anhängen

    Weil korrekt verschachtelte DOM-Elemente ohnehin nichts anderes als Arrays sind und auch als solche behandelt werden, bräuchtest Du scriptinterne Variablenarrays nur für den Fall, daß Du die Reihenfolgen der Elemente nach irgendwelchen Kriterien umsortieren möchtest.

    In sensibus mistis,
    HaThoV

    --
    Besuchen Sie http://www.4html.de, wenn Sie an einer
    Neuen Generation von Web-Publishing mitarbeiten wollen.
  2. Hi,

    Und zwar sollte ich 2 Felder haben, im linken sind alle auswählbaren Branchen gelistet, die der Kunde per Klick in das rechte Feld verweisen kann, natürlich kann er diese dann wieder aus der rechten löschen (zB. wenn er sich verklickt hat).

    Zwei Arrays speichern die jeweiligen Optionen, mit slice() und splice() kannst Du die Elemente hin und herschieben (Wenn Du IE 4 beruecksichtigen willst, musst Du diese Funktionen manuell nachbauen). Die Arrays-Values schreibst Du (je nach Browserversion, die Du beruecksichtigen willst) in Div-Layer oder - fuer Dom-Browser - auch in andere Elemente und verlinkst sie mit einem Funktionsaufruf, dem Du die Array-Indexnummer als Parameter mitgibst. Bei jedem Klick schreibst Du die Arrays dann neu in die jeweiligen Elemente.

    Gruesse  Joachim

  3. Hallo nochmal!

    Bei folgendem Lösungsansatz kommt immer die Meldung "')' erwartet", dabei wird Zeile 1, Zeichen 9 angegeben.
    Komischerweise funktioniert es beim onLoad, auch wenn ich einen Wert einsetze.

    <-- Beginn -->
    <html>
    <head>
    <script language="Javascript">
    function f_entf(tid) {
     x = 0;
     var test = document.test.links.value;
     var text = test.replace(tid, '');
     document.test.links.value = text;
     document.getElementById('spalte').innerHTML = "";
     f_ins(text);
    }
    function f_ins(text) {
     var larr = text.split(";");
    var x = 0;
    do {
     document.getElementById('spalte').innerHTML = document.getElementById('spalte').innerHTML + "<a href='javascript:f_entf("+larr[x]+";)'>"+larr[x]+"</a><br>";
     x = x + 1;
    } while(larr[x] <= larr.length);
    }
    </script>
    </head>
    <body onLoad="f_entf('');">
    <form name="test">
    <input type="text" name="links" value="1;2;3;4;5;6;">
    <div id='spalte'></div>
    </form>
    </body>
    </html>
    <-- Ende -->

    Sieht jemand den Fehler?

    lg, Jan