Kai345: Bestimmtes script bei Seitenaufruf starten.

Beitrag lesen

[latex]Mae  govannen![/latex]

<html>
<head>
<title></title>
<b><body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

[...]

</html></b>

Das ist Mist. Du schließt das body-Element und den schließenden html-Tag in ein b-Element ein und erzeugst dadurch eine unsinnige Verschachtelung. Entferne die Tags <b> und </b> rückstandlos. Weiterhin solltest du auch (aber das ist kein direkter Fehler) sämtlich Attribute des Body-Elements entfernen und die Darstellung rein per CSS lösen.

<form id="meinFormular" id="meinFormular" method="get" action="#">

Du vergibst hier zwei Mal das Attribut "id", das ist nicht gestattet.

<p>Welche Unterlagen werden benötigt</p>
    <input type="checkbox" id="checkbox1" onclick="javascript:zeigeText1(this.id)" checked> Zuwendungsnachweis<br>
    <input type="checkbox" id="checkbox2" onclick="javascript:zeigeText2(this.id)" checked> Agenda <br>
    <input type="checkbox" id="checkbox3" onclick="javascript:zeigeText3(this.id)" checked> Einladung <br>
    <input type="checkbox" id="checkbox4" onclick="javascript:zeigeText4(this.id)"> Checkliste Gesundheitsförderungsmaßnahmen<br>
    <input type="checkbox" id="checkbox5" onclick="javascript:zeigeText5(this.id)"> Hinweis auf EMC-Tool <br>
    </form>

Sieht doch aus wie eine Liste, oder? Also auch als Liste auszeichnen.
Die IDs sind überflüssig und können komplett entfallen.
Der Text soll als Label-Element eine Beziehung zur jeweiligen Checkbox aufbauen.
Die Zeilenumbrüche entfallen.
Das Label javascript: ist unnötig, was in onxxxx-Attributen steht, ist immer[1] Javascript.
Die Checkboxen sollten durch ein gemeinsames Name-Attribut gruppiert werden.
Es muß nicht für jede Checkbox eine eigene Funktion definiert werden.

Also bereinigen wir den Aufbau:

<form id="meinFormular" name="meinFormular" method="get" action="">  
	<p>Welche Unterlagen werden benötigt?</p>  
	<ul>  
		<li><label><input type="checkbox" name="unterlagen" onclick="zeigeText(this, 'ZWN')" checked> Zuwendungsnachweis</label></li>  
		<li><label><input type="checkbox" name="unterlagen" onclick="zeigeText(this, 'Agenda')" checked> Agenda</label></li>  
		<li><label><input type="checkbox" name="unterlagen" onclick="zeigeText(this, 'Einladung')" checked> Einladung</label></li>  
		<li><label><input type="checkbox" name="unterlagen" onclick="zeigeText(this, 'Checkliste')"> Checkliste Gesundheitsförderungsmaßnahmen</label></li>  
		<li><label><input type="checkbox" name="unterlagen" onclick="zeigeText(this, 'EMC')"> Hinweis auf EMC-Tool</label></li>  
	</ul>  
</form>

Nun zum Javascript. Ich würde es vorerst (ist wahrscheinlich noch optimierbar) so lösen:

(Aufgrund einiger Probleme mit meinem lokalen Server kann ich das gerade nicht selber testen, daher können Fehler drin sein)

  
// Um globale Variablen möglichst zu minimieren, den gesamten Code in eine Funktion einschließen  
// und diese direkt nach der Erstellung ausführen  
var zeigeText = (function () {  
    var texte = {  
        'ZWN': 'Zuwendungsnachweis',  
        'Agenda': 'Agenda',  
        'Einladung': 'Einladung',  
        'Checkliste': 'Checkliste',  
        'EMC': 'Hinweis EMC.'  
    };  
  
    // Diese Funktionsreferenz wird an die Variable zeigeText zurückgegeben und bei Aufrufen von zeigeText()  
    // wird nur diese Funktion ausgeführt  
    return function (el, targId) {  
        // [link:http://de.selfhtml.org/javascript/sprache/bedingt.htm#entweder_oder@title=Ternärer Operator] statt if ... else  
        document.getElementById(targId).innerHTML = (el.checked) ? '<br>' + texte[targId] : '';  
    };  
})();  

... Wobei der HTML-Teil mit den Ziel-Divs und dem per JS eingefügten <br> durchaus auch noch sinnvoller gestaltet werden kann. (z.B. Liste).
Weiterhin sollten die onclick-Attribute entfallen und duch unobstrusive Javascript ersetzt werden, Elementreferenzen einmalig ermittelt werden (z.B. onload) und nicht bei jedem Funktions-Aufruf durch document.getElementById erneut, aber das würde glaube ich jetzt viel zu weit führen...

<br>

... wird in den seltesten Fällen benötigt, löse die Darstellung per CSS

<font color="#FF0000">

...ist, wie die Attribute des body-Elements auch, veraltete Technik, durch CSS ersetzen.

Stur lächeln und winken, Männer!
Kai

--
Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
in Richtung "Mess up the Web".(suit)
SelfHTML-Forum-Stylesheet