Announcement

Collapse
No announcement yet.

JavaScript läuft nur auf IE

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JavaScript läuft nur auf IE

    Hallo,

    für die Preisberechnung in einem Formular setze ich ein JavaScript ein:

    Code:
    function rechne() {
    
    	// Preise zusammenstellen
    
    	if (document.getElementById("Alter1").value > 10) {var ptg = 25}  else if (document.getElementById("Alter1").value > 3){var ptg = 5}  else {var ptg = 0};
    	if (document.getElementById("Alter1").value > 10) {var pso = 105} else if (document.getElementById("Alter1").value > 3){var pso = 55} else {var pso = 0};
    	if (document.getElementById("Alter1").value > 10) {var pvn = 35}  else if (document.getElementById("Alter1").value > 3){var pvn = 20} else {var pvn = 0};
    	if (document.getElementById("Alter1").value > 10) {var pfs = 80}  else if (document.getElementById("Alter1").value > 3){var pfs = 40} else {var pfs = 0};
    	if (document.getElementById("Alter1").value > 10) {var pss = 70}  else if (document.getElementById("Alter1").value > 3){var pss = 35} else {var pss = 0};
    	
    	// Teilnehmer 1
    	// -----------------------------------------------------------------------------------------------------
    	
    	var tp1 = 0;
    	if (document.Anmeldeformular.TG1.checked) {								// Abhandeln der Tagesgäste
    		if (document.Anmeldeformular.Fr1.checked) {tp1 = tp1 + ptg};
    		if (document.Anmeldeformular.Sa1.checked) {tp1 = tp1 + ptg};
    		if (document.Anmeldeformular.So1.checked) {tp1 = tp1 + ptg};
    	}
    	else { 		// Abhandeln der Übernachtungen
    		if ((document.Anmeldeformular.Fr1.checked) && (document.Anmeldeformular.Sa1.checked) && (document.Anmeldeformular.So1.checked)) {
    			tp1 = tp1 + pso;												// Special Offer
    			if (document.Anmeldeformular.Di1.checked) {tp1 = tp1 + pvn}; 	// Verlängerungsnächte
    			if (document.Anmeldeformular.Mi1.checked) {tp1 = tp1 + pvn};
    			if (document.Anmeldeformular.Do1.checked) {tp1 = tp1 + pvn};
    			if (document.Anmeldeformular.Mo1.checked) {tp1 = tp1 + pvn};
    		}
    		if ((document.Anmeldeformular.Fr1.checked) && (document.Anmeldeformular.Sa1.checked) && (!(document.Anmeldeformular.So1.checked))) {
    			tp1 = tp1 + pfs;												// Freitag / Samstag
    			if (document.Anmeldeformular.Di1.checked) {tp1 = tp1 + pvn}; 	// Verlängerungsnächte
    			if (document.Anmeldeformular.Mi1.checked) {tp1 = tp1 + pvn};
    			if (document.Anmeldeformular.Do1.checked) {tp1 = tp1 + pvn};
    			if (document.Anmeldeformular.Mo1.checked) {tp1 = tp1 + pvn};
    		}
    		if ((!(document.Anmeldeformular.Fr1.checked)) && (document.Anmeldeformular.Sa1.checked) && (document.Anmeldeformular.So1.checked)) {
    			tp1 = tp1 + pss;												// Samstag / Sonntag
    			if (document.Anmeldeformular.Di1.checked) {tp1 = tp1 + pvn}; 	// Verlängerungsnächte
    			if (document.Anmeldeformular.Mi1.checked) {tp1 = tp1 + pvn};
    			if (document.Anmeldeformular.Do1.checked) {tp1 = tp1 + pvn};
    			if (document.Anmeldeformular.Mo1.checked) {tp1 = tp1 + pvn};
    		}
    	}
    	
    	document.getElementById("Preis1").value = tp1;
    	
    	// Felder disable/enable
    	
    	if (document.Anmeldeformular.TG1.checked) {								// Abhandeln der Tagesgäste
    		document.Anmeldeformular.Di1.disabled = true;
    		document.Anmeldeformular.Mi1.disabled = true;
    		document.Anmeldeformular.Do1.disabled = true;
    		document.Anmeldeformular.Mo1.disabled = true;
    	}
    	else {
    		document.Anmeldeformular.Di1.disabled = false;
    		document.Anmeldeformular.Mi1.disabled = false;
    		document.Anmeldeformular.Do1.disabled = false;
    		document.Anmeldeformular.Mo1.disabled = false;
    	}
    usw.
    Der Aufruf der Funktion erfolgt so:

    Code:
                      <td><input name="Alter1" type="text" id="Alter1" size="2" maxlength="2" OnChange="rechne()" ></td>
                      <td bgcolor="#FFFF99"><input name="TG1" type="checkbox" id="TG1" value="1" onchange="rechne()" /></td>
                      <td width="20"><input name="Di1" type="checkbox" id="Di1" OnChange="rechne()" value="1" ></td>
                      <td width="20"><input name="Mi1" type="checkbox" id="Mi1" onchange="rechne()" value="1" ></td>
                      <td width="20"><input name="Do1" type="checkbox" id="Do1" OnChange="rechne()" value="1" ></td>
                      <th width="20"><input name="Fr1" type="checkbox" id="Fr1" OnChange="rechne()" value="1" checked="checked" ></th>
                      <th width="20"><input name="Sa1" type="checkbox" id="Sa1" OnChange="rechne()" value="1" checked="checked" ></th>
                      <th width="20"><input name="So1" type="checkbox" id="So1" OnChange="rechne()" value="1" checked="checked" ></th>
                      <td width="20"><input name="Mo1" type="checkbox" id="Mo1" OnChange="rechne()" value="1" ></td>
                      <td width="20" valign="middle"><input name="Preis1" type="text" id="Preis1" readonly="true" size="3" maxlength="3" ></td>
    Unter Windows Internet Explorer funktioniert das wie gewünscht, in allen anderen Browsern, passiert überhaupt nichts.

    Wie kann ich dieses Script für alle gängigen Broweser anpassen ?

    Ich bin für Tipps sehr dankbar.

    Bema

  • #2
    Hallo,

    also wenn ich deinen Code wie angegeben Teste, dann erhalte ich als Fehlermeldung: document.Anmeldeformular is undefined
    Und das sowohl im IE als auch im FF.

    Es gibt also kein Element mit Namen "Anmeldeformular" und deshalb wird dein Script nicht ordnungsgemäß ausgeführt. Auch solltest du statt Zugriff über den Namen besser durchgängig die Variante über getElementById() wählen.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hallo,

      danke, dass Du Dich meinem Problem widmest.

      Die beiden Codeblöcke sind nicht vollständig, daher ist es klar, dass er "Anmeldeformular" nicht findet, dies ist natürlich definiert ...

      Code:
      <form action="" method="post" name="Anmedeformular" id="Anmeldeformular"
      Ich werde nun mal getElementById() ausprobieren und melde mich wieder...

      Bema

      Comment


      • #4
        Hallo,

        wenn das Formular tatsächlich "Anmedeformular" heißt, dann ist document.Anmeldeformular trotzdem undefiniert!

        Ansonsten ist ein wenig mehr Sorgfalt beim Posten durchaus angebracht. Es kann sonst niemand unterscheiden was ist Schusslichkeit beim Übertragen ins Forum und was ist ein "echter" Fehler!

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment

        Working...
        X