IE kann nicht dividieren

DiDiJo

Erfahrenes Mitglied
Hi Leute,

ich bin mal wider auf einen Fehler von meinem allerbesten Freund "Internet Explorer" gestoßen:

Ich habe mir folgende Funktion geschrieben, die mir einen Quadartmeter-Preis berechnet.
Hier die Funktion:
HTML:
function calculateSquareMeter(preisElement,flaecheElement,target,hiddenField) {
	preis = $.trim($('input[name='+preisElement+']').val());
	flaeche = $.trim($('input[name='+flaecheElement+']').val());
	
	preis = str_replace(' ','',preis);
	preis = str_replace('.','',preis);
	preis = str_replace(',','.',preis);
	
	flaeche = str_replace(' ','',flaeche);	
	flaeche = str_replace('.','',flaeche);
	flaeche = str_replace(',','.',flaeche);
		
	if (isNumber(preis) && isNumber(flaeche)) {
		
		preis_pro_qm = parseFloat(preis) / parseFloat(flaeche);		
		result = extround(preis_pro_qm,2);	
		
		$('#'+target).html(result+' €');
		$('#'+hiddenField).val(result+' €');	
	}
}


function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

function str_replace(searchString, replaceString, subject) {
	return subject.split(searchString).join(replaceString);
}

function extround(zahl,n_stelle) {
	zahl = (Math.round(zahl * n_stelle) / n_stelle);
    return zahl;
}

In der caluclateSquareMeter Fujnktion bricht der IE bei folgender Zeile ab
"preis_pro_qm = parseFloat(preis) / parseFloat(flaeche);"
... und ich habe keinem Schimemr warum ... in allen anderen gänigen Browsern (FF, Safari, Opera, Google Chrome) läuft alles bestens. Nur der ***** IE macht wieder faxen. Kann mir jemand vlt. ein wenig auf die Sprünge helfen.

Hier ein Live-Beispiel:
http://w00e1456.dd23312.kasserver.com/testseite.htm

Zum Testen müsst Ihr nur eine Preisvorstellung und eine Wohnfläche angeben. Der Rest sollte Anhand der Funktion ersichtlich sein ...

Wie gesagt in allen Browsern ausser dem IE läuft das ganze ....
 
Hi,

schreib ein var vor die Variable:
Code:
var preis_pro_qm = parseFloat(preis) / parseFloat(flaeche);
Ciao
Quaese
 
Hi,
in welcher IE-Version hast du dieses Problem denn?
In habe hier aktuell nur den IE 9 installiert und dort funktioniert die Funktion einwandfrei.

Allerdings würde ich noch Eingaben wie 0, 0 => NaN oder Zahl>0, 0 (z.b 400, 0) => Infinity abfangen ;)
 
Hi,

bei mir funktioniert die Funktion mit meiner Änderung auch im IE 8. Vorherige Versionen haben prinzipiell Probleme mit den Input-Feldern.

Ciao
Quaese
 
ich sehe gerade das es bei mir zuhause im ie8 keine probleme mehr habe (anders als auf der arbeit). Evtl. leigt es da an nem cache problem ... werd das morgen mal überprüfen...

aber nochmal zum verständnis. was hat dieses "var" bewirkt ... ich dachte JS wäre da etwas toleranter ....
 
Bei der Variablendeklaration mit/ohne var geht es um Geltungsbereiche.
Variablen die mit var in einer Funktion deklariert werden gelten nur für diese Funktion.
Variablen die ohne var deklariert/("erzeugt") werden gelten global.

Kleines Beispiel:

Code:
function testGlobal(){
    testvar = 'test';
}

function showTestGlobal(){
  console.log(testvar);
}

testGlobal(); 
showTestGlobal();

// console log output: test

function testLocal(){
 var testvar2 = 'test';
}

function showTestLocal(){
 console.log(testvar2);
}

testLocal();
showTestLocal();

// output: testvar2 is not defined
 

Neue Beiträge

Zurück