Autor | Zpráva | ||
---|---|---|---|
tarsy Profil |
#1 · Zasláno: 10. 8. 2017, 09:43:18
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 |
#2 · Zasláno: 10. 8. 2017, 11:26:12
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 |
#3 · Zasláno: 10. 8. 2017, 13:22:10
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 |
#5 · Zasláno: 10. 8. 2017, 14:51:26
Teď už tomu rozumím. Ještě jednou děkuji.
|
||
weroro Profil |
#6 · Zasláno: 10. 8. 2017, 15:00:14
tarsy:
Pekný zdroj informácií je tu Seznam všech CSS 3 selektorů pridaná je aj podpora daných atribútov. |
||
Časová prodleva: 7 let
|
0