Ja, da waren etliche Fehler in dem Code. Das Kernproblem ist jedoch, dass an ClosePopUp() ein String übergeben werden muss. Mit dem vorhandenen Code sah das generierte HTML so aus:
<button onclick='ClosePopUp(PersonenPopUp)'
So erwartet Javascript. dass PersonenPopUp eine Variable ist, die es jedoch nicht gibt. Man muss PersonenPopUp in doppelte Hochkommas setzen, so dass das generierte HTML so aussieht:
<button onclick='ClosePopUp("PersonenPopUp")'
Das erreicht man durch dieses Javascript:
<button onclick='ClosePopUp(\"" + popup + "\")' type=
Dieses funktioniert:
<script type="text/javascript">
function PersonenPopUp(Personenanzahl, Personennamen) {
var content = "";
var lPersonenPopUpHintergrund = document.createElement("div");
lPersonenPopUpHintergrund.id = 'lPersonenPopUpHintergrund';
document.body.appendChild(lPersonenPopUpHintergrund);
var lPersonenPopUp = document.createElement("div");
lPersonenPopUp.id = 'PersonenPopUp';
lPersonenPopUpHintergrund.appendChild(lPersonenPopUp);
for (var i = 0; i < Personenanzahl; i++) {
content = content + "</br></br><input type='radio' name='teacher' value=''>" + Personennamen[i];
}
var popup = "PersonenPopUp";
lPersonenPopUp.innerHTML = "<form method='post' action='ZeitplanerS.php' >" + content + "</br></br><button onclick='ClosePopUp(\"" + popup + "\")' type='button' name='submitPersonenPopUp'>" + popup + "</button><form></br>";
}
function ClosePopUp(PopUp) {
document.getElementById(PopUp).style.display = 'none';
}
PersonenPopUp(2, ["Hugo", "Anton"]);
</script>
Alles anzeigen
Außerdem:
- Die Verwendung einer Variablen für die ID ist überflüssig, da die ID ohnehin konstant ist.
- Den Parameter Personenanzahl kann man einsparen, wenn man die Anzahl aus dem Array über Personennamen.length ermittelt.
- Die Indizierung im Array besser mit 0 beginnen.
- Wenn der Button die Funktion des Submit haben soll, wird die Seite ohnehin neu geladen und das Popup verschwindet.