• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Eine überwältigende Zahl von Einsendungen wartet nun auf Euch, um begutachtet zu werden! Schaut selbst, welche Blüten das Thema hervorgebracht hat und stimmt dann ab, was davon Euch am besten gefällt. Hier geht es lang zur Abstimmung --> Klick

ul-Element in "popup" verschieben

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Liebe Community.

Ich habe ein xt-commerce installiert und möchte die Hauptseite folgendermaßen verändern:
Auf der index-Seite gibt eine Liste mit Herstellern (letztendlich nur ein <ul> mit bestimmter id).

Dieses ul-Element wird dynamisch vom CMS direkt in der index verändert.

Jetzt möchte ich, dass diese Liste in eine Art Popup "verschoben" wird.
Ich habe schon einen Popup programmiert, der mit JavaScript erstellt wird, wenn der entsprechende button gedrückt wird.
Nun soll dieses ul-Element normalerweise nicht sichtbar sein, allerdings in das div vom Popup eingebunden werden.

Sprich das ul existiert. Nun müsste ich per JavaScript das Teil da "reinschreiben".
Etwas in der Art
Code:
popup.innerHTML = [i]ul-Element mit der id "sowienoch"[/i]
Also das Element mit entsprechender id aus dem HTML-Dokument nehmen und dort hineinkopieren.


Ich hoffe, ich hab das jetzt ausreichend verständlich erklärt… Ist nicht so einfach :))
Ist das so irgendwie machbar?


Liebe Grüße
…
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Habe jetzt schon die JavaScript Möglichkeit .cloneNode(); gefunden.
Damit funktioniert das allerdings nicht.

Es wird immer nur das erste <li> Element meines <ul>'s kopiert.
Kann mir dabei jemand helfen?!
 

wdominik

Weißer Winterglockenapfel
Registriert
15.01.10
Beiträge
880
Mit .clonenode sollte es eigentlich gehen. Wie hast Du's denn gemacht? So?

Code:
var elem_copyFrom, elem_copyTo, elem_temp;

elem_copyFrom = document.getElementById("sowienoch"); // <ul id="sowienoch">...</ul>
elem_copyTo = document.getElementById("dahinsolls"); // <div id="dahinsolls">...</div>

elem_temp = elem_copyFrom.cloneNode(true); // Element klonen, einschließlich Unterelemente (deep = true)
elem_copyFrom.parentNode.removeChild(elem_copyFrom); // Original Element löschen, da sonst doppelte ID
elem_copyTo.appendChild(elem_temp); // kopiertes Element entsprechend einfügen
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Ich muss zugeben, dass ich mich sehr sehr blöd angestellt habe.
Das war mal wieder das typische "ich schau überall hin, nur da nicht, wo der Fehler liegt".

Es hat funktioniert. Das konnte ich allerdings nicht sehen, da das ganze schwarz auf schwarz war.
Also der profane Fehler, der einem immer unglaublich peinlich ist, weil man mindestens zwei Tage auf Fehlersuche war.

Also. Sorry für das unsinnige posting. Vielleicht hilfts ja wem anders :)
Und danke für Deine Antwort!

Was mich jetzt aber schon interessiert ist das mit den doppelten ID's. Kann das zu Problemen führen, wenn ich die originalen Elemente nicht entferne?
Oder wird dann mit den doppelten ID's einfach jede Veränderung auf beide Elemente angewandt?


Grüße!
 

wdominik

Weißer Winterglockenapfel
Registriert
15.01.10
Beiträge
880
Na das kenn ich nur zu gut, die einfachen Ursachen sieht man immer nicht. ;)

Naja eine ID muss laut Spezifikation eindeutig gewählt werden, darum sind auch Funktionen wie getElementsByID darauf ausgelegt, nur ein Element zu liefern, was wiederum bedeutet, dass es ist nicht klar definiert ist, wie der Browser bzw. dessen JS Engine damit umgeht – also ob Änderungen auf beide Elemente, das erste oder das n-te Vorkommen der ID angewandt werden. Das kannst Du zwar ausprobieren aber falls ein Browser irgendwann sein Verhalten diesbezüglich ändert, oder JS irgendwann mal „strict“ wird und solche Fehler nicht mehr toleriert, dann funktioniert dein Skript nicht mehr. Zumal Du ganz neben bei mit einer doppelten ID auch invalides HTML erzeugst, würde ich wirklich 2 verschiedene IDs verwenden. ;)