Javascript.RU

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

Не правильно работает калькулятор
Добрый вечер всем

есть калькулятор js + php

function changeText(){
 var resultOne = 0;
 var four = document.getElementById('four').options[document.getElementById('four').selectedIndex].dataset.val;
 var one = document.getElementById('one').options[document.getElementById('one').selectedIndex].dataset.val;
 var two = document.getElementById('two').options[document.getElementById('two').selectedIndex].dataset.val;
 var three = document.getElementById('three').options[document.getElementById('three').selectedIndex].dataset.val;
 var models = document.getElementsByName('models');
if (document.getElementById('seam1').checked)
     var flag = document.getElementById('seam1').dataset.val;
if (document.getElementById('seam2').checked)
     var flag = document.getElementById('seam2').dataset.val;
if (document.getElementById('seam3').checked)
     var flag = document.getElementById('seam3').dataset.val;
if (document.getElementById('rhombus').checked)
     var flag = document.getElementById('rhombus').dataset.val; // 1.1 вместо var flag = пишем var rhombus, чтобы наблюдать действия в коменте 1.2
	 
 resultOne = parseFloat(document.getElementById('models').dataset.val);
 resultOne += parseFloat(one);
 resultOne += parseFloat(two);
 resultOne += parseFloat(three);
 resultOne += parseFloat(flag);
 resultOne += parseFloat(four);
 // resultOne += parseFloat(rhombus);
// 1.2 с этой строкой сумма меняется только при активном checkbox
// если checkbox неактивен вместо суммы появляется значение NaN

 document.getElementById('resultTwo').innerHTML = resultOne;
 document.getElementById("price").value = resultOne;
}


<label class="control-label">Logo <? echo $currbrand; ?></label>
   <select name="Logo" id="four" class="form-control" onchange="changeText()">
   <option data-val='0'>no item</option>
     <?
  foreach($cfg_calc_fancywork["fancywork"] as $work => $price) 
	  { 
		 echo "<option data-val='".$price."'>".$work."</option>"; 
	  }
  ?> 
  </select>
<label class="control-label">items</label>
<div class="checkbox-list">
  <label>
	<input type="radio" id="seam1" data-val="0" value="set item one" checked="checked" name="seam"  onclick="changeText()"/> Item one
  </label>
  
  <label>
    <input type="radio" id="seam2" data-val="<? echo $cfg_calc_line_double; ?>" value="set item" name="seam"  onclick="changeText()"/> Item two
  </label>

  <label>
    <input type="radio" id="seam3" data-val="<? echo $cfg_calc_line_rs; ?>" value="set item" name="seam"  onclick="changeText()"/> Item three
  </label>

   <label>
    <input type="radio" id="rhombus" data-val="<? echo $cfg_calc_line_rhombus; ?>" value="set item" name="seam" onclick="changeText()"/> Item rhombus
  </label>
</div>
<h2 class="pull-right">Стоимость <b><span id="resultTwo"><? echo $cfg_curs["$info"]["$too_info"]; ?></span> руб.</b></h2>
<input name="Сумма заказа " id="price" type="hidden" value="<? echo $cfg_curs["$info"]["$too_info"]; ?>">


Значения цен заданны в конфиг файле.
Поблема в том, что элемент rhoumb коректно работает если у него type radio.
Но, нужен checkbox, вот с ним то и возникают проблемы.
Либо значение суммы не меняется, либо меняется только при активном чекбоксе посредством выбора остальных инпутов.
Если чекбокс не активен, в процессе выбора появляется значение NaN.

Грешу на эти строки в коде
Код:
(document.getElementById('rhombus').checked)
,
ибо по логике вещей получается два чекнутых инпута.
Но, с друго стороны...у них ведь разный тип одни radio, другой checkbox

Не могу понять в чем дело, прошу Вас помочь.

Последний раз редактировалось AlphaKeloid, 17.02.2016 в 00:08.
Ответить с цитированием
  #2 (permalink)  
Старый 17.02.2016, 06:26
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

А где у вас var rhombus??
Ответить с цитированием
  #3 (permalink)  
Старый 17.02.2016, 09:07
Интересующийся
Отправить личное сообщение для AlphaKeloid Посмотреть профиль Найти все сообщения от AlphaKeloid
 
Регистрация: 31.01.2016
Сообщений: 14

ИлиDilettante_Pro,
К 15-ой стрке комментарий есть.
Если так и оставить
if (documrnt.getElementById('rhombus').checked)
var flag = ....
сумма будет меняется не корректно

Последний раз редактировалось AlphaKeloid, 17.02.2016 в 10:08.
Ответить с цитированием
  #4 (permalink)  
Старый 17.02.2016, 09:29
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Я про 23-ю
Ответить с цитированием
  #5 (permalink)  
Старый 17.02.2016, 10:23
Интересующийся
Отправить личное сообщение для AlphaKeloid Посмотреть профиль Найти все сообщения от AlphaKeloid
 
Регистрация: 31.01.2016
Сообщений: 14

Dilettante_Pro,
Сначала нужно переименовать 15-ую
Т.к. parseFloat(rhombus) будет работать только с этой переменной
Поправьте меня, если я не прав
Мои наблюдения

Последний раз редактировалось AlphaKeloid, 17.02.2016 в 10:25.
Ответить с цитированием
  #6 (permalink)  
Старый 17.02.2016, 11:47
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

AlphaKeloid,
у вас в строках 2-7 объявлены все переменные и им присвоены значения, кроме rhombus. Поэтому 23-я строка и не работает. При чем тут переименования? В 15 строке нет переменной rhombus - там есть обращение к элементу DOM с индексом rhombus
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена значения в store страно работает I3ev ExtJS 0 09.12.2012 14:22
Скрипт правильно работает только один раз, после начинает выдавать ошибку. xodock Events/DOM/Window 2 23.07.2012 13:04
Калькулятор с методами. Не работает)) Huruffus Общие вопросы Javascript 8 04.06.2012 00:38
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
Скрипт меню-гармошки работает выборочно Extern Элементы интерфейса 2 23.02.2009 15:32