Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.05.2014, 16:59
Аватар для Gipsomaster
Новичок на форуме
Отправить личное сообщение для Gipsomaster Посмотреть профиль Найти все сообщения от Gipsomaster
 
Регистрация: 17.05.2014
Сообщений: 3

Проблемы с кроссбарузерностью скрипта. Калькулятор не правильно считает в разных б-ах
Здравствуйте, уважаемые форумчане. Я не силен в 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

Последний раз редактировалось Gipsomaster, 17.05.2014 в 17:12.
Ответить с цитированием
  #2 (permalink)  
Старый 17.05.2014, 18:05
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Ну для начала, Вам нужно обьявлять переменные через var.
Ответить с цитированием
  #3 (permalink)  
Старый 17.05.2014, 18:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

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

и будет вам счастье
Ответить с цитированием
  #4 (permalink)  
Старый 17.05.2014, 19:59
Аватар для Gipsomaster
Новичок на форуме
Отправить личное сообщение для Gipsomaster Посмотреть профиль Найти все сообщения от Gipsomaster
 
Регистрация: 17.05.2014
Сообщений: 3

рони,
Даже не знаю как Вас благодарить!!! (Могу материально, если скинете номер WMR в личку).
В общем, как минимум, от меня сейчас низкий поклон. Получается, что в принципе все было правильно, только данные с чекбоксов должны записываться иным образом, чем с выпадающего списка? Я как-то не совсем и понял что да как, но работает
Ответить с цитированием
  #5 (permalink)  
Старый 17.05.2014, 20:04
Аватар для Gipsomaster
Новичок на форуме
Отправить личное сообщение для Gipsomaster Посмотреть профиль Найти все сообщения от Gipsomaster
 
Регистрация: 17.05.2014
Сообщений: 3

Ruslan_xDD, и Вам спасибо за отклик, но дело в том, что это только фрагмент кода, на который я грешил (видать не ошибся), а в полном варианте переменные задаются через var.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему калькулятор не считает? Filja Общие вопросы Javascript 10 25.03.2015 10:40
Калькулятор Неправильно считает Jereme Общие вопросы Javascript 1 04.02.2013 14:17
Срабатывание скрипта в разные моменты при загрузки в разных браузерах VitalikPro Javascript под браузер 10 29.12.2011 18:24
Проблемы с событием onmouseover в разных браузерах jsuse Общие вопросы Javascript 4 29.11.2011 18:30
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37