Делаю калькулятор, рассчитывающий площади фигур.
Морда:
<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! Ума не приложу... При этом скрипты расчета площади круга и квадрата, организованные точно таким же образом, работают нормально и без конструктора! Люди, помогите пожалуйста!!