Javascript funktioniert nicht mehr im IE9

yvonnesnoopy

Grünschnabel
Hallo,

habe ein Script, das ein Bekannter geschrieben hat. Es hat immer prima funktioniert, aber IE9 hat´s klein gekriegt...
... und ich bin absolut kein Programmierer, darum brauche ich dringend Hilfe!

Das Script schicke ich dann per PN, wenn sich jemand erbarmen möchte? Oder wie funktioniert das?

... aaaaaaah, ich hänge es als zip-Datei an....

Danke schonmal!
Yvonne
 

Anhänge

  • summe.zip
    919 Bytes · Aufrufe: 12
Ich habe es jetzt nicht überprüft, aber es müsste so jetzt funktionieren. Außerdem habe ich deinen Quelltext optimiert und aufgeräumt. Du solltest deinen Programmierer mal darauf hinweisen.
Javascript:
function FindByName (name)
{
  var elements = document.forms[0].elements;
  
  for (var i = 0; i < elements.length; ++i)
  {
    if(name == elements[i].name)
    {
      return i;
    }
  }
  
  return -1;
}

function Format (value)
{
  value      = Math.round(value * 100);
  var select = (value % 100 == 0) ? 0 : ((value % 100) % 10 == 0) ? 1 : 2;
  value      = '' + (value / 100);
  
  switch (select)
  {
    // keine Nachkommastellen
    case 0:
      return value + ',00';
    // eine Nachkommastelle
    case 1:
      var parts = value.split('.');
      return parts[0] + ',' + parts[1] + '0';
    // zwei Nachkommastellen
    case 2:
      var parts = value.split('.');
      return parts[0] + ',' + parts[1];
  }
}

function DezPkt (value)
{
  if (value.search(/,/) != -1)
  {
    var parts = value.split(',');
    return (parts[0] + '.' + parts[1]) * 1;
  }
  else
  {
    return value * 1;
  }
}

function DoSumm ()
{
  var form     = document.forms[0];
  var elements = form.elements;
  var fields   = [];
  var prices   = [];
  var indices  = [];
  var counter  = 0;
  var result   = 0;
  var j, count, ni, price, mw, eu;
  
  for (var i = 0; i < elements.length; ++i)
  {
    if (elements[i].name.indexOf('__') == 0)
    {
      fields.push(elements[i].name.substr(2, 100));
      prices.push(elements[i].value);
    }
  }
  
  for (var i = 0; i < fields.length; ++i)
  {
    if (navigator.appName == 'Netscape')
    {
      ni    = fields[i];
      j     = FindByName(ni);
      count = elements[j].value;
    }
    else
    {
      ni    = fields[i];
      count = elements(ni).value;
    }
    
    price = DezPkt(prices[i]);
    
    if (count > 0)
    {
      counter += count;
      result  += count * price;
    }
  }
  
  mw = result * (19 / 119);
  eu = result / 1.95583;
  form._wh_anzfl.value = counter;
  form._wh_betr.value  = Format(result);
  form._wh_mwst.value  = Format(mw);
}
 
Hallo, vielen Dank! Werde es sofort testen und mich ggf. wieder melden.
Meinen Programmierer werde ich auf gar nichts mehr hinweisen... er hat mich ziemlich im Regen stehen lassen... aber: was uns nicht tötet...

Danke nochmal!
 
Problem ist, dass die Werte aus Eingabefeldern grundsätzlich den Datentyp "string" besitzen und deshalb auch der Konkatinationsoperator anders arbeitet. Deshalb muss man vorher die Werte in Zahlen umwandeln.
 
Hallo, kann man das Thema weiterführen, wenn das Problem wieder auftaucht nach fünf Jahren? Ich habe zwei JavaScripte, die im Internet Explorer funktionieren, in Google Chrome und Firefox aber nicht...
 
Warum nicht? Am besten wäre es, wenn Du die Skripts online hast und die URLs posten würdest, dann kann man es sich gleich in Aktion ansehen.
 
Hi, sorry, aus irgendeinem Grund habe ich keine Benachrichtigung bekommen, dass ich eine Antwort habe. Muss wohl mal meinen Spam-Ordner durchsuchen. Kann ich Dir eine PN schicken mit dem Link? Möchte es ungern öffentlich posten.
Grüße Yvonne
 
Zurück