Hallo,
Die ganze Sache soll so aussehen:
Eine Tablle z.B. mit Benutzern
Name | Email | Nochwas..
Die anzahl der angezeigten Benutzer ist unterschiedlich.
Das Script soll an dieser Stelle wie folgt eingesetz werden.
Beim Klick auf den Namen z.B. soll der besprochene Layer angezeigt werden (an der Mausposition.). DAS FUNKTIONIERT.
Nun soll aber in dem Layer ein Inhalt aus der Datenbank angezeigt werden. Dazu ist die UserID nötig..
Wie übergebe ich die nun mit !?
Puh, das wird zu kompliziert zum Erklären. Ich geben Dir mal ein Musterbeispiel. Frage nach, wenn Du dazu Fragen hast, die sich mit den entsprechenden Beschreibungen in http://de.selfhtml.org/javascript/objekte/index.htm nicht klären lassen.
Beispiel:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Datentabelle mit Klickinfo</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<style type="text/css">
<!--
table#dTabelle {border:1px solid black;}
table#dTabelle td {border:1px solid black;}
div#infoDIV {position:absolute; display:none; background-color:#FFFF99; border:1px solid black;}
-->
</style>
<script type="text/javascript">
<!--
var InfosAusDB = new Object();
InfosAusDB.uidMueller = "Das ist speziell für Mueller";
InfosAusDB.uidMaier = "Das ist speziell für Maier";
InfosAusDB.uidSchulze = "Das ist speziell für Schulze";
function init() {
var dTable = document.getElementById("dTabelle");
var rows = dTable.getElementsByTagName("TBODY")[0].getElementsByTagName("TR");
for (var i=0; i<rows.length; i++) {
rows[i].onclick = function(e) {showInfo(e, this.id);};
}
var infoDIV = document.getElementById("infoDIV");
infoDIV.onclick = hideInfo;
}
function showInfo(e, id) {
if (!e) e = window.event;
var infoText = document.createTextNode(id + ": " + InfosAusDB[id]);
var infoDIV = document.getElementById("infoDIV");
infoDIV.removeChild(infoDIV.firstChild);
infoDIV.appendChild(infoText);
infoDIV.style.display = "block";
infoDIV.style.left = e.clientX + "px";
infoDIV.style.top = e.clientY + "px";
}
function hideInfo() {
var infoDIV = document.getElementById("infoDIV");
infoDIV.style.display = "none";
}
window.onload = init;
//-->
</script>
</head>
<body>
<table id="dTabelle">
<caption>Nutzertabelle</caption>
<thead>
<tr>
<th>Name</th>
<th>E-Mail</th>
<th>nochwas</th>
</tr>
</thead>
<tbody>
<tr id="uidMueller">
<td>Mueller</td>
<td>mu@a.de</td>
<td>mu_nochwas</td>
</tr>
<tr id="uidMaier">
<td>Maier</td>
<td>ma@a.de</td>
<td>ma_nochwas</td>
</tr>
<tr id="uidSchulze">
<td>Schulze</td>
<td>schu@a.de</td>
<td>schu_nochwas</td>
</tr>
</tbody>
</table>
<div id="infoDIV"> </div>
</body>
</html>
Das ist Minimalcode, also junior programmer style ;-). Natürlich solltest Du Methoden wie getElement... vor ihrer Verwendung auf ihr Vorhandensein prüfen.
Bei den Daten aus der Datenbank bin ich davon ausgegangen, dass Du sie beim PHP-Parse-Vorgang als JavaScript-Code generierst, der zur Laufzeit ein JavaScript-Objekt erzeugt. Das würde ich bevorzugen. Zusätzliche HTML-Elemente, die man später erst komplziert mit JavaScript wieder auslesen muss, wären nur sinnvoll, wenn diese auch sonst, also nicht im infoDIV, irgendwo zu sehen sein sollen.
viele Grüße
Axel