JavaScript IE verändert Input Feld nicht, Opera schon

Tr@shMaster

Cadet 4th Year
Registriert
Dez. 2009
Beiträge
120
Hallo,

Warum kommt der IE mit folgendem Script nicht zurecht? Im Opera funktionierts problemlos, im IE wird einfach das "Input" Feld nicht verändert.

PHP:
function minpause() {
	zeitneu = parseFloat(prompt("Wie lange warst du in Kurzpause?", "Zahlenwert in Minuten eingeben"));
	zeitalt = parseFloat(document.getElementById("zeitalt").value);
	if(isNaN(zeitalt)) {
		zeitalt = 0;
	}
	if(isNaN(zeitneu)) {
		zeitneu = 0;
	}
	zeitges = zeitneu + zeitalt;
	document.getElementById("zeitalt").value = zeitges + " min";
}

PHP:
document.write("<button type=\"button\" value=\"Kurzpause merken\" onclick=\"minpause();\">Kurzpause merken</button> Gesamtzeit heute: <input type=\"text\" name=\"zeitalt\" id=\"zeitalt\" size=\"6\" readonly>");

Habe schon viel rumprobiert, aber der IE schluckt mein Script nicht. :(
 
Mach mal ein simples alert im onclick, statt deiner Funktion. Vermutlich wird das event nicht gefeuert im IE. Google bringt dazu jedenfalls einiges.

P.S.: IE-Version ist schon eine relevante Info bei solchen Fragen.
 
Hi,

wenn du die aktuelle IE-Version nutzt dann lass dir doch mit den Entwicklertools anzeigen, wo das Problem liegt. Ansonsten kann man Tumbleweed nur zustimmen.

VG,
Mad
 
Danke für die Antworten!

Zuerst mal "Sorry", dass ich die Version vergessen habe. Ist der IE 9.0.8112.

Die Funktion wird ausgeführt, die "Prompt" Abfrage kommt auch im IE, aber danach tut sich nichts.
 
Na das ist doch schonmal was. Jetzt kannst du entweder den Debugger im Entwicklerpanel anwerfen und einen breakpoint an den Anfang deiner Funktion setzen (das wäre die beste Herangehensweise) oder du packst einzelne console.log()-Ausgaben zwischen die Zeilen deines Skripts, um so zu sehen, wie weit du kommst und was zwischendurch so berechnet wurde.

Vielleicht sagt dir die Konsole des Entwicklerpanels auch direkt, ob und wo Fehler aufgetreten sind.
 
Zuletzt bearbeitet:
Hallo,

Das ist dabei rausgekommen:

PHP:
SCRIPT438: Das Objekt unterstützt diese Eigenschaft oder Methode nicht. 
INDEX.html, Zeile 52 Zeichen 2

Zeile 52:
PHP:
	zeitalt = parseFloat(document.getElementById("zeitalt").value);

Und jetzt? :(

Edit:

Habs gelöst. Einfach ein
PHP:
var zeitalt;
vor der Zeile eingefügt. Danke nochmal! ;)
 
Hast du zufällig in deinem markup ein Element mit der id zeitalt? Das würde nämlich dieses Problem erklären.

Generell solltest du aber von globalen Variablen (ohne var davor) absehen. Halte den scope immer klein, sonst handelst du dir schwer nachvollziehbare Fehler ein.

Du kannst dir auch mal den strict mode für Javascript ansehen. Der hätte dir sofort einen Fehler geworfen, weil du in einer Funktion so nebenbei eine globale Variable anlegst.
 
Tumbleweed schrieb:
Hast du zufällig in deinem markup ein Element mit der id zeitalt? Das würde nämlich dieses Problem erklären.

Ja, habe ich.

Jetzt wird mir so einiges klar...

OK, dann werde ich in Zukunft von globalen variablen absehen. Vielen Dank für den Tipp. :)
 
Zurück
Oben