Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2016, 22:05
Аватар для scv
scv scv вне форума
Новичок на форуме
Отправить личное сообщение для scv Посмотреть профиль Найти все сообщения от scv
 
Регистрация: 02.04.2016
Сообщений: 6

Магия с конструктором Number()
Делаю калькулятор, рассчитывающий площади фигур.

Морда:
<div id="triangle">
	<h1>Calculate area of triangle</h1>

	<label for="ta">a</label>
	<input id="ta" type="number">

	<label for="tb">b</label>
	<input id="tb" type="number">

	<label for="tc">c</label>
	<input id="tc" type="number">

	<button id="calc-t">calculate</button>
	<button id="clear-t">clear</button>

	<span id="AoT"></span>
</div>


Конструктор объекта "треугольник":
function Triangle(a, b, c) {
*!*
        this.side1 = Number(a), // Длинна 1 стороны
        this.side2 = Number(b), // Длинна 2 стороны
        this.side3 = Number(c), // Длинна 3 стороны
*/!*
	Triangle.prototype.p = function() {
		with(this) {
			return (side1 + side2 + side3) / 2} // Полупериметр
		},

		Triangle.prototype.s = function() {
			with(this) {
				return Math.sqrt(p() * (p() - side1) * (p() - side2) * (p() - side3)) // Площадь
		}
	}


Скрипт берет значения из полей ввода с id "ta", "tb" и "tc".
При нажатии на кнопку "calculate" происходит валидация и непосредственно расчет (обращение к методу Triangle.prototype.s). В таком виде все адекватно работает, но если убрать конструктор Number() получаются бредовые пятизначные числа! Например площадь треугольника со сторонами 2, 2, 1 = 0,97. Но если просто убрать из кода конструктор Number(), т.е. написать не "this.side1 = Number(a)", a "this.side1 = a" и т.д., то получается 11934.88! Ума не приложу... При этом скрипты расчета площади круга и квадрата, организованные точно таким же образом, работают нормально и без конструктора! Люди, помогите пожалуйста!!
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2016, 22:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,125

scv,
Сообщение от scv
значения из полей ввода
строки!!! строки при сложении соединяются "1" + "2" = "12"
Ответить с цитированием
  #3 (permalink)  
Старый 07.04.2016, 22:57
Аватар для scv
scv scv вне форума
Новичок на форуме
Отправить личное сообщение для scv Посмотреть профиль Найти все сообщения от scv
 
Регистрация: 02.04.2016
Сообщений: 6

Батюшки-Матушки... На типах погорел)) Спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение поля типа number Григорий Данилович jQuery 6 12.11.2015 08:24
Объект рисуется не удовлетворяя условия...... Ndex Общие вопросы Javascript 14 20.01.2015 12:56
Таймер не работает в сафари kuzyanah Общие вопросы Javascript 1 14.11.2013 20:46
String to Number teles Общие вопросы Javascript 5 09.04.2012 08:53
Помогите с таблицей(убрать столбцы) Lexxbry Элементы интерфейса 17 02.09.2011 02:01