Na dann sorgen wir mal dafür, dass du das script verstehst, indem wir es Zeile für Zeile durchgehen ;)
Doch vorher kurz zu Screenshot 1. Der Grund, warum der rote Container zu kurz ist ist, weil ich (um die buttons nebeneinander zu positionieren) alles mit float: left; gesetzt habe (der float sorgt dafür, dass die Elemente um das gefloatete Element herumfließt, also ignoriert wird). Dies lässt sich einfach beheben.
Durch das einfügen von einem display: inline; ist der Fehler schnell behoben.
Wichtig:
Du musst es sowohl in das style-Element von Link 3, als auch dem div, welcher die Elemente aus 1 anzeigt einfügen. Ansonsten rutscht es nämlich in die nächste Reihe. Also etwa so:
HTML:
<button onmouseover="Element()" onmouseout="hide()" class="button" id="link3" style="float: left; display: inline;">Link3</button>
<div style="display: inline;" id="element2" class="hovgroup2 hovgroup3">
</div>
So nun zum anstrengenden Teil, dem Javascript. Zeile für Zeile:
Code:
function Element() {
var eins = document.getElementById("element1");
var zwei = eins.cloneNode(true);
zwei.id = "test";
document.getElementById("element2").appendChild(zwei);
}
function hide() {
var element = document.getElementById("test");
element.remove(element);
}
Das ist der gesamte Code, welchen wir nun Stück für Stück durchgehen.
Code:
function Element() {
hier das Script
}
Also du erstellst eine neue Funktion, indem du "function NameDerFunktion() {}" schreibst. Der Name der Funktion wird später im button abgerufen:
<
button ---hier--->>>onmouseover="Element()" onmouseout="hide()"<<----hier---- class="button" id="link3" style="float: left;">Link3</
button>
<--------------Nächste Zeile------------------>
Code:
var eins = document.getElementById("element1");
Also ich erstelle eine VARIABLE, indem ich "var NameDerVariable = " schreibe.
Ich kann z.B. "var blabla = '5';" schreiben. Wenn ich nun "document.write( blabla );", dann wird in diesem Falle eine 5 auf das document gedruckt.
"document.getElementById("element1");" dieser Teil macht folgendes:
Wir suchen eine id namens "element1" in unserem Document (also in dem Falle unserem html Code) und weisen sie der variable "eins" zu.
<--------------Nächste Zeile------------------>
Code:
var zwei = eins.cloneNode(true);
Also wir erstellen noch eine variable. Dieses mal nennen wir sie "zwei". Variable "zwei" macht folgendes:
Wir Klonen die Variable "eins", indem wir "cloneNode" auf true setzen. Wir machen dies für variable "eins" geltend, indem wir "eins." davor schreiben.
<--------------Nächste Zeile------------------>
Wir haben ein "zwei." davor stehen. Also gilt das Nachfolgende für Variable "zwei". In dieser Zeile ändern wir die ID die im html Code steht (in diesem Falle zu "test") Also steht im html Code dann <div ID="test">.
<--------------Nächste Zeile------------------>
Code:
document.getElementById("element2").appendChild(zwei);
Nun fügen wir alles zusammen. Wir suchen in unserem Document nach der ID "element2" (ID "element2" ist der Teil unseres Codes, wo alles reingeklont werden soll) und fügen nun variable "zwei" hinzu. Das machen wir, indem wir appendChild verwenden. Es wird also als "child" von "element2" dargestellt.
HTML:
<div id="element2">
Alles was hier drin steht, ist ein Child von "element2"
</div>
Funktion "Element()" ist hiermit abgeschlossen.
Nächste Funktion:
Wir öffnen unsere Funktion "hide()" ganz normal mit function hide() {}
Wir erstellen danach die Variable "element", welche nach der ID "test" in unserem Document sucht.
"element.remove(element);"
Mit "element." machen wir alles für die Variable "element" geltend. Danach entfernen wir mit "remove()" etwas. In diesem Falle entfernen wir die Variable "element".
Fertig.
So, nun erklär ich dir noch ganz genau was passiert:
Wir erstellen klonen ja erst ALLES, was die ID "element1" hat. Das bedeutet unser Code sieht so aus.
HTML:
<div class="hovgroup3" id="hovele1">
Das hier wird geklont!!!
<div id="element1">
<button class="geheim text">Ich bin der Link 1-1</button>
<button class="geheim text">Ich bin der Link 1-2</button>
<button class="geheim text">Ich bin der Link 1-3</button>
</div>
</div>
<button onmouseover="Element()" onmouseout="hide()" class="button" id="link3" style="float: left; display: inline;">Link3</button>
<div style="display: inline;" id="element2" class="hovgroup2 hovgroup3">
Und hier eingefügt:
<div id="element1">
<button class="geheim text">Ich bin der Link 1-1</button>
<button class="geheim text">Ich bin der Link 1-2</button>
<button class="geheim text">Ich bin der Link 1-3</button>
</div>
</div>
Jetzt habe ich ein Problem. Denn wenn ich nun das geklonte entfernen müsste, würde ich ja auch das obere löschen, da es die selbe ID ist. Ich muss die ID also erst ändern.
Folgendes passiert. Es wird ganz normal geklont. Aber WÄHREND des klonens ändere ich die ID des geklonten mithilfe von "zwei.id = "test";". Jetzt sieht der Code so aus:
HTML:
<div class="hovgroup3" id="hovele1">
Das hier wird geklont!!!
<div id="element1">
<button class="geheim text">Ich bin der Link 1-1</button>
<button class="geheim text">Ich bin der Link 1-2</button>
<button class="geheim text">Ich bin der Link 1-3</button>
</div>
</div>
<button onmouseover="Element()" onmouseout="hide()" class="button" id="link3" style="float: left; display: inline;">Link3</button>
<div style="display: inline;" id="element2" class="hovgroup2 hovgroup3">
Und hier eingefügt:
<div id="test"><-----------------Änderung der ID
<button class="geheim text">Ich bin der Link 1-1</button>
<button class="geheim text">Ich bin der Link 1-2</button>
<button class="geheim text">Ich bin der Link 1-3</button>
</div>
</div>
Nun kann ich in der funtion hide() alles wieder entfernen, sofern es die ID "test" hat.
Also mit
"var element = document.getElementById("test");" die ID "test" auf variable "zwei" festlegen.
Danach Variable "zwei" mit "remove" entfernen.
Fertig.
Ich hoffe du hast das Script nun verstanden. Wie dir (hoffentlich) aufgefallen sein müsste, musst du den Code NICHT ändern. Das einzige was du machen musst ist bei deinen zukünftigen Buttons die IDs richtig zuweisen.
Kopiere einfach das Script nochmal und ändere die IDs nach belieben.
So und jetzt ist es deine Aufgabe, irgendwie die Buttons von Link 2 zu implementieren!
Guck dir einfach den Aufbau von Link 1 an.
Okay zu den anderen Problemen:
Stell diese erstmal in den Hintergrund und bearbeite eine zur Zeit. Wenn du das alles verstanden hast, gucken wir uns die Feinheiten an.
(Das ist übrigens mit Abstand der längste Post den ich JEMALS verfasst habe)