Оптимизация кода
Здравствуйте дорогие форумчани,
Вот решил заняться изучением Джавы. Долго как то руки не доходили или терпение не хватало а сейчас решил заняться )). Можно сказать первый день и вот такой набросок. Подскажите если можно как то оптимизировать код (сократить) я думаю как то это можно сделать,да и вообще взглянити глазами бывалых скриптовщиков и скажите есть смысл продолжать )))). Всем заранее спасибо. калькулятор в виде задачи для построения (выполнения) я взял тут , можно сказать что первое попалось под руки http://doma-fitnes.ru/sutochnaya-norma-kalorij
function calculate(){
// var age = document.getElementById('age');
// var ageError = document.getElementById('ageError');
// var sexM = document.getElementById('sexM');
// var sexF =document.getElementById('sexF');
// var sexErorr = document.getElementById('sexError');
// var weightKg = document.getElementById('weightKg');
// var weightErorr = document.getElementById('weightError');
// var heightSm =document.getElementById('heightSm');
// var heightError = document.getElementById('heightError');
// var idNone = document.getElementById('idNone');
// var threeTimes = document.getElementById('threeTimes');
// var fiveTimes = document.getElementById('fiveTimes');
// var fiveTimesH = document.getElementById('fiveTimesH');
// var everyday = document.getElementById('everyday');
// var everydayH = document.getElementById('everydayH');
// var workoutError = document.getElementById('workoutError');
// var submitSpan =document.getElementById('submitSpan');
var submitLw = document.getElementById('losingWeight')
var x= parseInt (age.value);
var y = parseInt (weightKg.value);
var z = parseInt (heightSm.value);
var c = (threeTimes.value);
var q = (fiveTimes.value);
var w = (fiveTimesH.value);
var e = (everyday.value);
var r = (everydayH.value);
var f = (sexF.value);
var m = (sexM.value);
*!*
var totalM = parseInt (10*y+6.25*z-5*x+5);//не берет переменную "m" пришлось ставить цифру
*/!*
var totalF = parseInt (10*y+6.25*z-5*x-f);// а тут взял переменную f та к и не понял почему
if (document.getElementById('sexF').selected ){submitSpan.innerHTML = totalF}
else if (document.getElementById('sexM').selected) {submitSpan.innerHTML = totalM}
if (document.getElementById('sexF').selected && document.getElementById('threeTimes').selected)
{submitSpan.innerHTML = parseInt (totalF*c)}
else if (document.getElementById('sexM').selected && document.getElementById('threeTimes').selected)
{submitSpan.innerHTML = parseInt (totalM*c)}
if (document.getElementById('sexF').selected && document.getElementById('fiveTimes').selected)
{submitSpan.innerHTML = parseInt (totalF*q)}
else if (document.getElementById('sexM').selected && document.getElementById('fiveTimes').selected)
{submitSpan.innerHTML = parseInt (totalM*q)}
if (document.getElementById('sexF').selected && document.getElementById('fiveTimesH').selected)
{submitSpan.innerHTML = parseInt (totalF*w)}
else if (document.getElementById('sexM').selected && document.getElementById('fiveTimesH').selected)
{submitSpan.innerHTML = parseInt (totalM*w)}
if (document.getElementById('sexF').selected && document.getElementById('everyday').selected)
{submitSpan.innerHTML = parseInt (totalF*e)}
else if (document.getElementById('sexM').selected && document.getElementById('everyday').selected)
{submitSpan.innerHTML = parseInt (totalM*e)}
if (document.getElementById('sexF').selected && document.getElementById('everydayH').selected)
{submitSpan.innerHTML = parseInt (totalF*r)}
else if (document.getElementById('sexM').selected && document.getElementById('everydayH').selected)
{submitSpan.innerHTML = parseInt (totalM*r)}
if (document.getElementById('sexF').selected && document.getElementById('threeTimes').selected)
{submitLw.innerHTML = parseInt (totalF*c-0.2*(totalF*c))}
else if (document.getElementById('sexM').selected && document.getElementById('threeTimes').selected)
{submitLw.innerHTML = parseInt (totalM*c-0.2*(totalM*c))}
if (document.getElementById('sexF').selected && document.getElementById('fiveTimes').selected)
{submitLw.innerHTML = parseInt (totalF*q-0.2*(totalF*q))}
else if (document.getElementById('sexM').selected && document.getElementById('fiveTimes').selected)
{submitLw.innerHTML = parseInt (totalM*q-0.2*(totalM*q))}
if (document.getElementById('sexF').selected && document.getElementById('fiveTimesH').selected)
{submitLw.innerHTML = parseInt (totalF*w-0.2*(totalF*w))}
else if (document.getElementById('sexM').selected && document.getElementById('fiveTimesH').selected)
{submitLw.innerHTML = parseInt (totalM*w-0.2*(totalM*w))}
if (document.getElementById('sexF').selected && document.getElementById('everyday').selected)
{submitLw.innerHTML = parseInt (totalF*e-0.2*(totalF*e))}
else if (document.getElementById('sexM').selected && document.getElementById('everyday').selected)
{submitLw.innerHTML = parseInt (totalM*e-0.2*(totalm*e))}
if (document.getElementById('sexF').selected && document.getElementById('everydayH').selected)
{submitLw.innerHTML = parseInt (totalF*r-0.2*(totalF*r))}
else if (document.getElementById('sexM').selected && document.getElementById('everydayH').selected)
{submitLw.innerHTML = parseInt (totalM*r-0.2*(totalM*r))}
}
window.onload = function(){
var submit = document.getElementById('submit');
submit.onclick = calculate;
}
|
Пердимонокль.
|
Ну ладно, вопрос: до js на каком языке писали?
|
Цитата:
Цитата:
Цитата:
Цитата:
не нужно каждый раз получать ссылку на элемент, если это можно сделать один раз сделай нормальный пример |
Цитата:
|
Не будет оно жить. Так не делают. Ну вообще так не делают. Например если условие проверяется больше 1 раза, его соединяют в одно:
if (document.getElementById('sexF').selected {
// тут все проверки которые имеют смысл когда sexF выбран
}
Но и это еще не все - позвонив прямо сейчас вы получите в подарок event-driven programming всего за неделю, не меньше. Не надо вообще ничего проверять, поскольку оно уже БЫЛО проверено в прошлом. Когда юзер щелкнул что-то - эта проверка уже прошла, а вы второй раз проверяете результат проверки чтобы сделать проверку того что уже проверено и в проверке не нуждается. Для этого на события формы или что там является контейнером барахла вешаются функции которые на фронтире сразу все проверяют, присваивают и взаимодействуют. В финале - голимый рендер результата. |
Цитата:
|
4ipset,
Цитата:
|
Пардон за опечатку знаю что два разных языка, просто 24 часа писал код уже под утро когда закончил сюда выложил под "Джава" имелось ввиду "Джава скрипт " до этого не на каком языке не писал. Сейчас составлю версию с запуском.
|
Как то так я думаю)http://learn.javascript.ru/play/5HUhNb
но здесь почему то не работает а на локалке работает |
4ipset,
не работает, потому, что кто-то забыл добавить функцию calculate и определить такие объекты как age, weightKg, heightSm и т.п. |
|
| Часовой пояс GMT +3, время: 14:54. |