Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.10.2014, 09:33
Интересующийся
Отправить личное сообщение для 27NataRUS Посмотреть профиль Найти все сообщения от 27NataRUS
 
Регистрация: 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 в 09:36.
Ответить с цитированием
  #2 (permalink)  
Старый 27.10.2014, 09:37
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от 27NataRUS
Скрипт не хочет считать с дробным числом, отсекает всё после запятой. Подскажите, пожалуйста, что не так?
Так ты везде используешь parseInt()...
Ответить с цитированием
  #3 (permalink)  
Старый 27.10.2014, 10:04
Интересующийся
Отправить личное сообщение для 27NataRUS Посмотреть профиль Найти все сообщения от 27NataRUS
 
Регистрация: 23.10.2012
Сообщений: 17

Ух ты, круто! Спасибо! Убрала то, что сказали, теперь считает нормально.
А ещё не могли бы подсказать, можно ли сделать, чтобы при вводе кол-ва не с точкой, а с запятой, тоже выводился результат? А то NaN выдаёт.
Ответить с цитированием
  #4 (permalink)  
Старый 27.10.2014, 10:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

27NataRUS,
Проверка ввода целого или вещественного числа
14 строка там
Ответить с цитированием
  #5 (permalink)  
Старый 27.10.2014, 11:08
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от 27NataRUS
можно ли сделать, чтобы при вводе кол-ва не с точкой, а с запятой, тоже выводился результат?
Как вариант, менять запятую на точку...

var val='123,456';
alert(val.replace(',','.'));

Последний раз редактировалось ksa, 27.10.2014 в 11:11.
Ответить с цитированием
  #6 (permalink)  
Старый 29.10.2014, 15:22
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 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
Вот и все секреты работы с числами.
Ответить с цитированием
  #7 (permalink)  
Старый 29.10.2014, 19:40
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от demoniqus
Простой способ привести число, написанное строкой, к числовому типу:
'1.01' * 1
var n = +'1.01';
alert(typeof n);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите вытащить отсюда калькулятор sergiocharm Общие вопросы Javascript 8 17.04.2012 22:22
Помогите с replace! faforty Общие вопросы Javascript 2 28.08.2011 13:10
Помогите с умножением списка на чекбокс Resident Общие вопросы Javascript 18 14.11.2010 22:38
Помогите! Многоуровневые вкладки! sergeeeeee Элементы интерфейса 2 02.08.2010 23:50