Не правильно работает калькулятор
Добрый вечер всем;)
есть калькулятор 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 Не могу понять в чем дело, прошу Вас помочь. |
А где у вас var rhombus??
|
ИлиDilettante_Pro,
К 15-ой стрке комментарий есть. Если так и оставить if (documrnt.getElementById('rhombus').checked) var flag = ....сумма будет меняется не корректно |
Я про 23-ю
|
Dilettante_Pro,
Сначала нужно переименовать 15-ую Т.к. parseFloat(rhombus) будет работать только с этой переменной Поправьте меня, если я не прав Мои наблюдения |
AlphaKeloid,
у вас в строках 2-7 объявлены все переменные и им присвоены значения, кроме rhombus. Поэтому 23-я строка и не работает. При чем тут переименования? В 15 строке нет переменной rhombus - там есть обращение к элементу DOM с индексом rhombus |
Часовой пояс GMT +3, время: 18:09. |