Autor Zpráva
tarsy
Profil
Zdravím, na stránce produktu www.ntvservices.cz/product-details/sanit-all-profi/ je formulář kde se při výběru objemu změní cena. Tato akce je ošetřena JavaScriptem, který perfektně pracuje ve všech prohlížečích kromě IE 9. IE hlásí chybu Nelze načíst vlastnost objem nedefinovaného nebo nulového odkazu ... Nenapadá někoho jak upravit kód tak aby script pracoval i v IE 9. Dohledal jsem že chyba by mohla být způsobena nastavením meta tagu X-UA-Compatible, ale problém to nevyřešilo. Chyba se zobrazuje na řádku var vyber_objemu = formular.elements.objem; Níže posílám celý kód:
var kod_produktu_cena = new Array([]);
kod_produktu_cena["001014"]=[585];
kod_produktu_cena["001021"]=[90];
kod_produktu_cena["001022"]=[118];
kod_produktu_cena["001023"]=[0];
kod_produktu_cena["001024"]=[537];
kod_produktu_cena["001032"]=[310];
kod_produktu_cena["001033"]=[0];
kod_produktu_cena["001034"]=[1198];
kod_produktu_cena["002012"]=[190];
kod_produktu_cena["002013"]=[0];
kod_produktu_cena["002014"]=[950];
kod_produktu_cena["002022"]=[190];
kod_produktu_cena["002023"]=[0];
kod_produktu_cena["002024"]=[950];
kod_produktu_cena["002031"]=[145];
kod_produktu_cena["002032"]=[190];
kod_produktu_cena["002033"]=[0];
kod_produktu_cena["002034"]=[950];

function zjisti_cenu()
{
  var cena_produktu=0;
  var formular = document.forms.vyber_polozky;
  var vyber_objemu = formular.elements.objem;
    for(var i = 0; i < vyber_objemu.length; i++)
    {
    if(vyber_objemu[i].checked)
    {
      cena_produktu = kod_produktu_cena[vyber_objemu[i].value];
      break;
    }
    }
    return cena_produktu;
}

function zobraz_cenu()
{
  var cena_podle_objemu = zjisti_cenu();
  var divobj = document.getElementById('zobraz-cenu');
  divobj.innerHTML = +cena_podle_objemu;
}
weroro
Profil
Neskúšal som ale možno takto:
function zjisti_cenu() {
    var cena_produktu = 0;
    var formular = document.querySelector('form#vyber_polozky');
    var vyber_objemu = formular.querySelectorAll('[id^="objem"]');
    for (var i = 0; i < vyber_objemu.length; i++) {
        if (vyber_objemu[i].checked) {
            cena_produktu = kod_produktu_cena[vyber_objemu[i].value];
            break;
        }
    }
    return cena_produktu;
}
tarsy
Profil
weroro:
Perfektní, teď už to běží i v IE. Moc děkuju. Dokážete stručně vysvětlit proč jste použil to co jste použil, nebo poslat odkaz kde bych se dozvěděl víc.
Kcko
Profil
tarsy:
Ty tam nemáš položky pod jménem pouze "objem". Skladají se z názvu objem_cislo nebo tak něco. Proto weroro použil jiný selektor (takový , který říká vyber všechno jeho id začíná slovem "objem").
Tady máš css selektory (které mnohdy fungují v JS, resp u novějších browserů www.cheetyr.com/css-selectors)
tarsy
Profil
Teď už tomu rozumím. Ještě jednou děkuji.
weroro
Profil
tarsy:
Pekný zdroj informácií je tu Seznam všech CSS 3 selektorů pridaná je aj podpora daných atribútov.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: