Магия с конструктором 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! Ума не приложу... При этом скрипты расчета площади круга и квадрата, организованные точно таким же образом, работают нормально и без конструктора! Люди, помогите пожалуйста!!:help: |
scv,
Цитата:
|
Батюшки-Матушки... На типах погорел)) :lol: Спасибо!
|
Часовой пояс GMT +3, время: 11:56. |