Servus zusammen,

ich habe ein Problem mit JAvascript, welches ich einfach nicht gelöst bekomme.
Ich habe einen Onlineshop (Magento) übernommen, an dem sehr viel mit Javascript rumgebastelt wurde um zusätzlich Funktionen zu integrieren.

Also, es gibt ein Produkt, dessen Preis sich aus mehrer Möglichkeiten berechnet.
Z.B. aus der Breite und Höhe + Modellart + ob transparent oder abdunkelnd.

Da Megento diese Funktionen nicht bietet wurde mit Javascript gearbeitet. ich bin nur leider nicht wirklich fit in der Materie.
Damit Magento das rechnen kann wurden 2 Scripte angelegt, produkt.js + function.js
DAs Problem ist, dass er sich die richtigen Tabellen und Preise zieht, aber nur bis zu einer bestimmten Breite. Danach rechnet er gar nichts mehr.
Es gibt 4 Möglichkeiten.
1. Modell B7 - transparent
2. Modell B7 - abdunkelnd
3. Modell B11 - transparent
4. Modell B11 - abdunkelnd

Das kusiose ist, dass die erste Möglichkeit einwandfrei funktioniert.
Die anderen nur bis zu einer bestimmten Breite.

Ich poste mal die scripte, vielleicht findet ihr auf anhieb eine Fehler.
Mist zuviele Zeichen, hier nur mal die product.js
die andere poste ich gerne auch noch, wenn ihr diese bracuht.

produkt.js:
Code:
/* ----------------------------------- Kassettenrollo ----------------------------------*/
var usage_default  = new Array();

var cs_currentList = false;

var objPriceLists = {
  1 : 477,  // Preisliste 1 - B7 transparent
  2 : 479,  // Preisliste 2 - B11 transparent
  3 : 476,  // Preisliste 3 - B7 verdunkelnd
  4 : 478   // Preisliste 4 - B11 verdunkelnd
};  
  
var objDiffWidth  = { 1 : -4, 2 : -5, 3 : -4, 4 : -5 };
var objDiffHeight = { 1 : 2, 2 : 2.5, 3 : 2, 4 : 2.5 };

for (var i =0; i < document.getElementById('select_474').length; i++)
{
  usage_default[i] = new Object();
  usage_default[i]['value'] = document.getElementById('select_474').options[i].value;
  usage_default[i]['text'] = document.getElementById('select_474').options[i].text;
}

function elpix_setConfig()
{
  // Hinweis 1 (richtig messen)
  document.getElementById('hintLink1').onclick = function(){
    document.getElementById('hint1').style.display = 'block';
  }
  document.getElementById('hintClose1').onclick = function(){
    document.getElementById('hint1').style.display = 'none';
  }
 
  document.getElementById('options_471_text').readOnly = true; // Stofffarbe readOnly
  document.getElementById('dd_471').innerHTML = document.getElementById('dd_471').innerHTML + '<div>W&auml;hlen Sie aus der Farbpalette eine Farbe</div>';
  document.getElementById('options_473_text').readOnly = true; // Kassettenfarbe readOnly
  document.getElementById('dd_473').innerHTML = document.getElementById('dd_473').innerHTML + '<div>W&auml;hlen Sie aus der Farbpalette eine Farbe</div>';
  
  document.getElementById('options_468_text').readOnly = true; // Produktbreite
  document.getElementById('dd_468').innerHTML = document.getElementById('dd_468').innerHTML + '<div>Hier bitte nichts eingeben, automatische Berechnung</div>';
  document.getElementById('options_466_text').readOnly = true; // Fensterfluegelhoehe
  document.getElementById('dd_466').innerHTML = document.getElementById('dd_466').innerHTML + '<div>Hier bitte nichts eingeben, automatische Berechnung</div>';
  
  // Richtmasse
  elpix_hide_property(477); 
  elpix_hide_property(476);
  elpix_hide_property(479);
  elpix_hide_property(478);
  // Bedienung
  elpix_hide_property(474); 
  
  document.getElementById('dd_469').innerHTML = document.getElementById('dd_469').innerHTML + '<div>m&ouml;gliche Werte: <span id="ut_469">' + elpix_getMinMax(0, false, 'select_477', objDiffWidth[3]) + '</span></div>';
  document.getElementById('dd_467').innerHTML = document.getElementById('dd_467').innerHTML + '<div>m&ouml;gliche Werte: <span id="ut_467">' + elpix_getMinMax(1, false, 'select_477', objDiffHeight[3]) + '</span></div>';
  
  //--------------------------------------------------------------------------------------
  // Wechsel der Modellart B7/B11
  //--------------------------------------------------------------------------------------
  changeModell(document.getElementById('test_465'));
  document.getElementById('test_465').onchange = function() {
    changeModell(this);
  }
  
  //--------------------------------------------------------------------------------------
  // Wechsel der Stoffart
  //--------------------------------------------------------------------------------------
  changeStoff(document.getElementById('test_464'));
  document.getElementById('test_464').onchange = function() {
    changeStoff(this);
  }
  
  //--------------------------------------------------------------------------------------
  // Breite Dropdown
  //--------------------------------------------------------------------------------------
  document.getElementById('options_469_text').onchange = function()
  {
    document.getElementById('options_466_text').value = '';
    document.getElementById('options_467_text').value = '';
    usePriceList(cs_currentList);
  }
  
  // Hoehe Dropdown, Eingabe ueberpruefen und Preis berechnen
  document.getElementById('options_467_text').onchange = function()
  {
    document.getElementById('options_466_text').value = '';
    usePriceList(cs_currentList);
  }
  
  // bei Fokus auf Hoehe -> wenn bei Breite nix angegeben, das Feld Breite fokussieren
  document.getElementById('options_467_text').onfocus = function()
  {
    if ( document.getElementById('options_469_text').value == '' ){
      document.getElementById('options_469_text').focus();
    }
  }
  
  //------------------------------ Wechsel der Stoffart ----------------------------------
  function changeStoff(select_field)
  {
    document.getElementById('options_471_text').value = '';
    document.getElementById('stoff_1').style.display  = 'none';
    document.getElementById('stoff_2').style.display  = 'none';
    
    // transparent
    if (1 == select_field.selectedIndex)
    {
      document.getElementById('stoff_1').style.display = 'block';
      
      if ( 1 == document.getElementById('test_465').selectedIndex ){
        usePriceList(1);
      }
      else if ( 2 == document.getElementById('test_465').selectedIndex ){
        usePriceList(2);
      }
    }
    // abdunkelnd
    else if (2 == select_field.selectedIndex)
    {
      document.getElementById('stoff_2').style.display = 'block';
      
      if ( 1 == document.getElementById('test_465').selectedIndex ){
        usePriceList(3);
      }
      else if ( 2 == document.getElementById('test_465').selectedIndex ){
        usePriceList(4);
      }
    }
  }
  
  //------------------------------- Wechsel des Modells (B7/B11) -------------------------
  function changeModell(select_id)
  {
    elpix_show_property(474); // Bedienung
    
    // B7
    if (1 == select_id.selectedIndex)
    {
      // Bedienarten erstellen (links/rechts)
      document.getElementById('select_474').length = 1;
      new_option = new Option(usage_default[1]['text'], usage_default[1]['value'], false, false);
      document.getElementById('select_474').options[document.getElementById('select_474').length] = new_option;
      new_option = new Option(usage_default[2]['text'], usage_default[2]['value'], false, false);
      document.getElementById('select_474').options[document.getElementById('select_474').length] = new_option;
      
      if ( 1 == document.getElementById('test_464').selectedIndex ){
        usePriceList(1);
      }
      else if ( 2 == document.getElementById('test_464').selectedIndex ){
        usePriceList(3);
      }
    }
    // B11
    else if (2 == select_id.selectedIndex)
    {
      // Bedienarten erstellen (mitte) 
      document.getElementById('select_474').length = 1;
      new_option = new Option(usage_default[3]['text'], usage_default[3]['value'], false, false);
      document.getElementById('select_474').options[document.getElementById('select_474').length] = new_option;
      
      if ( 1 == document.getElementById('test_464').selectedIndex ){
        usePriceList(2);
      }
      else if ( 2 == document.getElementById('test_464').selectedIndex ){
        usePriceList(4);
      }
    }
    else {
      elpix_hide_property(474);
    }
  }
  
  //------------------- holt die entsprechende Preisliste und setzt die anderen wieder ausser Kraft --------------------------------
  function usePriceList(list_id)
  {
    elpix_hide_and_disable_select(476);
    elpix_hide_and_disable_select(477);
    elpix_hide_and_disable_select(478);
    elpix_hide_and_disable_select(479);
    
    if ( document.getElementById('options_469_text').value != '' ) {
      stiftbreite(468, 469, objDiffWidth[list_id]);
    }
    if ( document.getElementById('options_467_text').value != '' ) {
      stiftbreite(466, 467, objDiffHeight[list_id]);
    }
    
    if (cs_currentList ){
      elpix_set_field_unrequired('select_' + objPriceLists[ cs_currentList ]);
    }
    elpix_set_field_required('select_' + objPriceLists[list_id]);
    
    if (document.getElementById('options_469_text').value != '')
    {
      elpix_compare(0, 'options_469_text', 'select_' + objPriceLists[list_id], objDiffWidth[list_id]);
      
      if (document.getElementById('options_467_text').value != ''){
        elpix_compare(1, 'options_467_text', 'select_' + objPriceLists[list_id], objDiffHeight[list_id]);
      }
    }
    document.getElementById('ut_469').innerHTML = elpix_getMinMax(0, false, 'select_' + objPriceLists[list_id], objDiffWidth[list_id]);
    document.getElementById('ut_467').innerHTML = elpix_getMinMax(1, false, 'select_' + objPriceLists[list_id], objDiffHeight[list_id]);
    cs_currentList = list_id;
    opConfig.reloadPrice();
  }
  
  this.elpix_checkForm = function()
  {
    usePriceList(cs_currentList);
    productAddToCartForm.submit();
  }
}
window.onload = function()
{
  elp = new elpix_setConfig();
}

Bei Magento wurden 4 Preislisten angelegt, auf die die Scripte zugreifen.
Wie gesagt, ich kann die scripte ein bißchen verstehen, aber auch nicht wirklich viel.

Wäre super wenn mir jmd helfen könnte. Falls ihr noch weiter Informationen benötigt, bitte sagt mir bescheid.

VIELEN VIELE VIELEN DANK!!!!

LG Alex