Да, просто замени весь шаблон на этот:
|

27.10.2014, 08:33
|
|
Интересующийся
|
|
Регистрация: 23.10.2012
Сообщений: 17
|
|
|
Помогите с умножением.
Здравствуйте!
Скрипт не хочет считать с дробным числом, отсекает всё после запятой. Подскажите, пожалуйста, что не так?
<form class="user_form" action="" name="form-5">
<select onchange="calc()" id="type_design" class="form-control">
<option selected disabled>-- Продукция из гранита --</option>
<option value="4490">African Raimbow</option>
<option value="4090">African Red</option>
<option value="2990">Azul Noce</option>
<option value="2290">Azul Platino</option>
<option value="2790">Baltic Brown</option>
<option value="6090">Bethel White</option>
<option value="2890">Bianco Cristal</option>
<option value="1790">Bianco Sardo</option>
<option selected disabled>-- Продукция из мрамора --</option>
<option value="3990">Arabescato Altissimo II</option>
<option value="2690">Arabescato Cervaiole IV</option>
<option value="3990">Bardiglio Imperiale</option>
<option value="3990">Bianco Carrara C</option>
<option value="2690">Bianco Carrara CD</option>
<option value="1690">Bianco Carrara D</option>
<option value="4290">Bianco Gioia C</option>
<option value="1990">Bianco Perlino</option>
</select>
Кол-во: <input type="text" id="count" value="1" onchange="calc()" /> м<sup>кв</sup>
<div>Предварительная стоимость: <span id="result">0</span> руб.</div>
</form>
function calc() {
var type_design = document.getElementById("type_design");
var count = document.getElementById("count");
var result = document.getElementById("result");
var price = 0;
price += parseInt(type_design.options[type_design.selectedIndex].value);
price = parseInt(count.value) * price;
result.innerHTML = price;
}
Последний раз редактировалось 27NataRUS, 27.10.2014 в 08:36.
|
|

27.10.2014, 08:37
|
 |
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,304
|
|
|
Сообщение от 27NataRUS
|
|
Скрипт не хочет считать с дробным числом, отсекает всё после запятой. Подскажите, пожалуйста, что не так?
|
Так ты везде используешь parseInt()...
|
|

27.10.2014, 09:04
|
|
Интересующийся
|
|
Регистрация: 23.10.2012
Сообщений: 17
|
|
Ух ты, круто! Спасибо! Убрала то, что сказали, теперь считает нормально.
А ещё не могли бы подсказать, можно ли сделать, чтобы при вводе кол-ва не с точкой, а с запятой, тоже выводился результат? А то NaN выдаёт.
|
|

27.10.2014, 09:19
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,154
|
|
|
|
|

27.10.2014, 10:08
|
 |
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,304
|
|
|
Сообщение от 27NataRUS
|
|
можно ли сделать, чтобы при вводе кол-ва не с точкой, а с запятой, тоже выводился результат?
|
Как вариант, менять запятую на точку...
var val='123,456';
alert(val.replace(',','.'));
Последний раз редактировалось ksa, 27.10.2014 в 10:11.
|
|

29.10.2014, 14:22
|
|
Профессор
|
|
Регистрация: 28.05.2008
Сообщений: 182
|
|
|
Простой способ привести число, написанное строкой, к числовому типу:
'1.01' * 1
При этом не надо использовать никакие функции. Скорее всего parseInt приводит к эффекту работы с целыми числами, характерной для некоторых языков, когда дробная часть отсекается типа 4/3=1, хотя на самом деле должно получиться 1,333333
Если мешается запятая:
'1,01'.replace(/,/, '.')
Судя по всему ты пока еще не очень освоилась в этом языке. Вот тебе еще задачка: сложи в JS (прямо в отладчике браузера) .7+.1. Что получишь? Думаю, что не 0.8
А потом попробуй Math.round((.7+.1)*10)/10
Вот и все секреты работы с числами.
|
|

29.10.2014, 18:40
|
 |
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
|
Сообщение от demoniqus
|
Простой способ привести число, написанное строкой, к числовому типу:
'1.01' * 1
|
var n = +'1.01';
alert(typeof n);
|
|
|
|