Hallo zusammen,
ich arbeite an einer Internetseite die aus einer SQL Datenbank eine Ergebnisliste (sieht aus wie Tabelle) dynamisch je nach Nutzereingabe erzeugt.
Auf die einzelnen Ergebnisse kann man klicken, und dadurch öffnet sich ein Modal. Da in diesem Modal immer mehr Einträge dazu kommen und es langsam unübersichtlich wird, wollte ich Tabs in das Modal einbauen. Hierzu habe ich auf w3schools eine Lösung gefunden. Jedoch funktioniert das Javascript nur bei dem ersten Ergebnis in der Ergebnisliste. Sobald ich auf das zweite klicke, wird in den Tabs nichts angezeigt. Bei der Untersuchung des Quellcodes habe ich festgestellt. dass nur beim aller erster Ergebnis im Modal style="display: block" von Tab zu Tab wandert und dies so anzeigt. Bei allen anderen Ergebnissen bleibt Display auf None.
Hier mal die relevanten Codeteile:
<div class="w3-bar w3-border-bottom">
<button class="tablink w3-bar-item w3-button w3-hover-gray" onclick="openCity(event, 'tab1')"><?php echo $lang_modal_button_tab_1; ?></button>
<button class="tablink w3-bar-item w3-button w3-hover-gray" onclick="openCity(event, 'tab2') "><?php echo $lang_modal_button_tab_2; ?></button>
<button class="tablink w3-bar-item w3-button w3-hover-gray" onclick="openCity(event, 'tab3') "><?php echo $lang_modal_button_tab_3; ?></button>
</div>
<div id="tab1" class="w3-container city">
<table border="0">
<tr>
<td width ="700">
<table style="float:left;">
<tr>
<th width="900" style="text-align:center" bgcolor="#f4f6f7">'.$lang_modal_details.'</th>
</tr>
<tr>
<td style="vertical-align:middle"><p title="'.$lang_modal_first_approver_title.'">'.$lang_modal_first_approver.': '.$first_approver.'</p></td>
</tr>
</table>
</div>
<div id="tab2" class="w3-container city">
<table border="0" width="900"
<tr>
<td colspan ="2">
</td>
</tr>
<tr>
<th colspan ="3" style="text-align:center" bgcolor="#f4f6f7">'.$lang_modal_additional_appl_docs_title.'</th>
</tr>
<tr>
<th colspan ="3" style="text-align:center">'.$lang_modal_templates_title.'</th>
</tr>
<tr>
... und so weiter. Die Variablen zielen auf Werte in der Datenbank ab. Die richtigen Daten werden auch geladen, jedoch eben nur im ersten Ergebnis angezeigt. Sobald ich das Modal schließe und ein neues Ergebnis anschauen möchte werden die Daten eben nicht angezeigt.
die Javascript Funktion:
<script>
document.getElementsByClassName("tablink")[0].click();
function openCity(evt, cityName) {
var i, x, tablinks;
x = document.getElementsByClassName("city");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
tablinks = document.getElementsByClassName("tablink");
for (i = 0; i < x.length; i++) {
tablinks[i].classList.remove("w3-green");
}
document.getElementById(cityName).style.display = "block";
evt.currentTarget.classList.add("w3-green");
}
</script>
Die grundsätzliche Seite ist eine php Seite. Ich habe schon festgestellt, dass ich komischerweise die Buttons außerhalb des phps programmieren muss.
Ich habe leider nichts finden können, wie ich den Code anpassen muss, damit nicht nur beim ersten Ergebnis die Tabs mit Daten gefüllt werden,
sondern auch bei allen weiteren. Dort bleibt wie gesagt Display style auf None und somit stehen keine Daten darunter.
Vielen Dank für Eure Hilfe