Проблемы с кроссбарузерностью скрипта. Калькулятор не правильно считает в разных б-ах
Здравствуйте, уважаемые форумчане. Я не силен в javascript, но тем не менее написал скрипт калькулятора, который подходит под мои нужды. Вот только не смог найти ошибки, которые приводят к тому, что калькулятор считает правильно не во всех браузерах. (Хром, Опера - нормально. ФФокс, Сафари и IE - не правильно). Ошибка, скорее всего, в синтаксисе Яваскрипта, но я в нем не силен, поэтому прошу помощи.
Наибольшие сомнения в написании вот таких фрагментов: if (document.form.Perimetr_Ud_ispolzuemyy_razmer.value==1 && document.form.varianty_ustanovki_peremychek.value==1 && document.form.shag_profilya.value==1) { P=Math.ceil(((document.form.dlinna_komnaty.value*2)+(document.form.shirina_komnaty.value*2))*1.05); Obrezki=Math.ceil(S*1.44*0.10/3); document.form.Perimetr_Ud_naimenovanie.value='Профиль UD-27 (3-х метровый) '; document.form.Perimetr_Ud_kolichestvo.value=Math.ceil(P/3+Obrezki); document.form.varianty_ustanovki_peremychek_t.value='Соединитель одноуровневый (Краб)'; document.form.varianty_ustanovki_peremychek_p.value=Math.ceil(S*0); } else if (document.form.Perimetr_Ud_ispolzuemyy_razmer.value==1 && document.form.varianty_ustanovki_peremychek.value==1 && document.form.shag_profilya.value==2) { P=Math.ceil(((document.form.dlinna_komnaty.value*2)+(document.form.shirina_komnaty.value*2))*1.05); Obrezki=Math.ceil(S*1.44*0.10/3); document.form.Perimetr_Ud_naimenovanie.value='Профиль UD-27 (3-х метровый) '; document.form.Perimetr_Ud_kolichestvo.value=Math.ceil(P/3+Obrezki); document.form.varianty_ustanovki_peremychek_t.value='Соединитель одноуровневый (Краб)'; document.form.varianty_ustanovki_peremychek_p.value=Math.ceil(S*0); } else if (document.form.Perimetr_Ud_ispolzuemyy_razmer.value==1 && document.form.varianty_ustanovki_peremychek.value==2 && document.form.shag_profilya.value==1) { P=Math.ceil(((document.form.dlinna_komnaty.value*2)+(document.form.shirina_komnaty.value*2))*1.05); document.form.Perimetr_Ud_naimenovanie.value='Профиль UD-27 (3-х метровый) '; document.form.Perimetr_Ud_kolichestvo.value=Math.ceil(P/3); document.form.varianty_ustanovki_peremychek_t.value='Соединитель одноуровневый (Краб)'; document.form.varianty_ustanovki_peremychek_p.value=Math.ceil(S*1.01); } else if (document.form.Perimetr_Ud_ispolzuemyy_razmer.value==1 && document.form.varianty_ustanovki_peremychek.value==2 && document.form.shag_profilya.value==2) { P=Math.ceil(((document.form.dlinna_komnaty.value*2)+(document.form.shirina_komnaty.value*2))*1.05); document.form.Perimetr_Ud_naimenovanie.value='Профиль UD-27 (3-х метровый) '; document.form.Perimetr_Ud_kolichestvo.value=Math.ceil(P/3); document.form.varianty_ustanovki_peremychek_t.value='Соединитель одноуровневый (Краб)'; document.form.varianty_ustanovki_peremychek_p.value=Math.ceil(S*0.8); } else if (document.form.Perimetr_Ud_ispolzuemyy_razmer.value==1 && document.form.varianty_ustanovki_peremychek.value==3 && document.form.shag_profilya.value==1) { P=Math.ceil(((document.form.dlinna_komnaty.value*2)+(document.form.shirina_komnaty.value*2))*1.05); document.form.Perimetr_Ud_naimenovanie.value='Профиль UD-27 (3-х метровый) '; document.form.Perimetr_Ud_kolichestvo.value=Math.ceil(P/3); document.form.varianty_ustanovki_peremychek_t.value='Соединитель одноуровневый (Краб)'; document.form.varianty_ustanovki_peremychek_p.value=Math.ceil(S*0); } else if (document.form.Perimetr_Ud_ispolzuemyy_razmer.value==2 && document.form.varianty_ustanovki_peremychek.value==1 && document.form.shag_profilya.value==1) { P=Math.ceil(((document.form.dlinna_komnaty.value*2)+(document.form.shirina_komnaty.value*2))*1.05); Obrezki=Math.ceil(S*1.44*0.10/4); document.form.Perimetr_Ud_naimenovanie.value='Профиль UD-27 (4-х метровый) '; document.form.Perimetr_Ud_kolichestvo.value=Math.ceil(P/4+Obrezki); document.form.varianty_ustanovki_peremychek_t.value='Соединитель одноуровневый (Краб)'; document.form.varianty_ustanovki_peremychek_p.value=Math.ceil(S*0); } else if (document.form.Perimetr_Ud_ispolzuemyy_razmer.value==2 && document.form.varianty_ustanovki_peremychek.value==2 && document.form.shag_profilya.value==1) { P=Math.ceil(((document.form.dlinna_komnaty.value*2)+(document.form.shirina_komnaty.value*2))*1.05); document.form.Perimetr_Ud_naimenovanie.value='Профиль UD-27 (4-х метровый) '; document.form.Perimetr_Ud_kolichestvo.value=Math.ceil(P/4); document.form.varianty_ustanovki_peremychek_t.value='Соединитель одноуровневый (Краб)'; document.form.varianty_ustanovki_peremychek_p.value=Math.ceil(S*1.01); } else if (document.form.Perimetr_Ud_ispolzuemyy_razmer.value==2 && document.form.varianty_ustanovki_peremychek.value==2 && document.form.shag_profilya.value==2) { P=Math.ceil(((document.form.dlinna_komnaty.value*2)+(document.form.shirina_komnaty.value*2))*1.05); document.form.Perimetr_Ud_naimenovanie.value='Профиль UD-27 (4-х метровый) '; document.form.Perimetr_Ud_kolichestvo.value=Math.ceil(P/4); document.form.varianty_ustanovki_peremychek_t.value='Соединитель одноуровневый (Краб)'; document.form.varianty_ustanovki_peremychek_p.value=Math.ceil(S*0.8); } else { P=Math.ceil(((document.form.dlinna_komnaty.value*2)+(document.form.shirina_komnaty.value*2))*1.05); document.form.Perimetr_Ud_naimenovanie.value='Профиль UD-27 (4-х метровый) '; document.form.Perimetr_Ud_kolichestvo.value=Math.ceil(P/4); document.form.varianty_ustanovki_peremychek_t.value='Соединитель одноуровневый (Краб)'; document.form.varianty_ustanovki_peremychek_p.value=Math.ceil(S*0); }; Вот ссылка на сам калькулятор. Всем не равнодушным заранее спасибо :) P.S. Извините, не написал в чем именно не соответствие. В Хроме и Опере все считает правильно, в остальных браузерах при любых значениях выпадающих кнопок, калькулятор возвращает только последний вариант else |
Ну для начала, Вам нужно обьявлять переменные через var.
|
Gipsomaster,
аккуратно меняем все document.form.shag_profilya.value==1 на document.form.shag_profilya[0].checked и соотвественно document.form.shag_profilya.value==2 на document.form.shag_profilya[1].checked и будет вам счастье |
рони,
Даже не знаю как Вас благодарить!!! (Могу материально, если скинете номер WMR в личку). В общем, как минимум, от меня сейчас низкий поклон. Получается, что в принципе все было правильно, только данные с чекбоксов должны записываться иным образом, чем с выпадающего списка? Я как-то не совсем и понял что да как, но работает :) |
Ruslan_xDD, и Вам спасибо за отклик, но дело в том, что это только фрагмент кода, на который я грешил (видать не ошибся), а в полном варианте переменные задаются через var.
|
Часовой пояс GMT +3, время: 11:55. |