Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.09.2014, 08:00
Новичок на форуме
Отправить личное сообщение для 4ipset Посмотреть профиль Найти все сообщения от 4ipset
 
Регистрация: 27.09.2014
Сообщений: 5

Оптимизация кода
Здравствуйте дорогие форумчани,
Вот решил заняться изучением Джавы. Долго как то руки не доходили или терпение не хватало а сейчас решил заняться )). Можно сказать первый день и вот такой набросок. Подскажите если можно как то оптимизировать код (сократить) я думаю как то это можно сделать,да и вообще взглянити глазами бывалых скриптовщиков и скажите есть смысл продолжать )))). Всем заранее спасибо. калькулятор в виде задачи для построения (выполнения) я взял тут , можно сказать что первое попалось под руки 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;
    
}

Последний раз редактировалось 4ipset, 28.09.2014 в 13:29.
Ответить с цитированием
  #2 (permalink)  
Старый 27.09.2014, 10:43
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Пердимонокль.
Ответить с цитированием
  #3 (permalink)  
Старый 27.09.2014, 11:00
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Ну ладно, вопрос: до js на каком языке писали?
Ответить с цитированием
  #4 (permalink)  
Старый 27.09.2014, 11:36
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от 4ipset
var totalM = parseInt (10*y+6.25*z-5*x+5);//не берет переменную "m" пришлось ставить цифру 
ну ты же закомментировал строчку
Сообщение от 4ipset
// var sexM = document.getElementById('sexM');

Сообщение от 4ipset
var totalF = parseInt (10*y+6.25*z-5*x-f);// а тут взял переменную f та к и не понял почему
и вправду чудо, так как строчка
Сообщение от 4ipset
// var sexF =document.getElementById('sexF');
у тебя также закомментирована

не нужно каждый раз получать ссылку на элемент, если это можно сделать один раз

сделай нормальный пример
Ответить с цитированием
  #5 (permalink)  
Старый 27.09.2014, 11:39
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от 4ipset
от решил заняться изучением Джавы
это ты зря
Ответить с цитированием
  #6 (permalink)  
Старый 27.09.2014, 11:49
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Не будет оно жить. Так не делают. Ну вообще так не делают. Например если условие проверяется больше 1 раза, его соединяют в одно:

if (document.getElementById('sexF').selected {

// тут все проверки которые имеют смысл когда sexF выбран

}


Но и это еще не все - позвонив прямо сейчас вы получите в подарок event-driven programming всего за неделю, не меньше.

Не надо вообще ничего проверять, поскольку оно уже БЫЛО проверено в прошлом. Когда юзер щелкнул что-то - эта проверка уже прошла, а вы второй раз проверяете результат проверки чтобы сделать проверку того что уже проверено и в проверке не нуждается.

Для этого на события формы или что там является контейнером барахла вешаются функции которые на фронтире сразу все проверяют, присваивают и взаимодействуют. В финале - голимый рендер результата.
Ответить с цитированием
  #7 (permalink)  
Старый 27.09.2014, 13:14
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Вот решил заняться изучением Джавы.
Для начала вдолби себе раз и навсегда, что java и javascript - абсолютно разные языки.
Ответить с цитированием
  #8 (permalink)  
Старый 27.09.2014, 13:16
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

4ipset,
Цитата:
Вот решил заняться изучением Джавы.
Тогда тебе на другой ресурс, тут поцаны на Javascript'е программируют)
Ответить с цитированием
  #9 (permalink)  
Старый 28.09.2014, 13:23
Новичок на форуме
Отправить личное сообщение для 4ipset Посмотреть профиль Найти все сообщения от 4ipset
 
Регистрация: 27.09.2014
Сообщений: 5

Пардон за опечатку знаю что два разных языка, просто 24 часа писал код уже под утро когда закончил сюда выложил под "Джава" имелось ввиду "Джава скрипт " до этого не на каком языке не писал. Сейчас составлю версию с запуском.
Ответить с цитированием
  #10 (permalink)  
Старый 28.09.2014, 13:46
Новичок на форуме
Отправить личное сообщение для 4ipset Посмотреть профиль Найти все сообщения от 4ipset
 
Регистрация: 27.09.2014
Сообщений: 5

Как то так я думаю)http://learn.javascript.ru/play/5HUhNb
но здесь почему то не работает а на локалке работает

Последний раз редактировалось 4ipset, 28.09.2014 в 13:55.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация кода Dpakowa Ваши сайты и скрипты 17 03.10.2013 00:20
Оптимизация кода Nifler jQuery 6 30.09.2013 21:14
Оптимизация кода assd18 Общие вопросы Javascript 4 21.06.2013 15:26
Оптимизация кода Prizrak177 Общие вопросы Javascript 0 15.02.2011 16:36
Помогите пожалуйста. Оптимизация кода. touch_the_sky Events/DOM/Window 0 17.06.2009 14:52