2014-02-13 5 views
-1

Следующий код увеличивает количество мужчин в задании перемещения, чтобы общее количество часов составляло менее 9 часов. Этот код работает нормально. (http://economymoving.net/get_an_online_moving_quote.php)Javascript «If, else if, else with multiple conditions»

// determines # of men needed to stay <= 9 hours and sets a 2 man minimum 
      var menQty; 

     if (Math.ceil(manHrs/9) < 2) { 
      menQty = 2; 
     }else{ 
      menQty = Math.ceil(manHrs/9); 
     } 

Однако, если есть громоздкая вещь на работу должно быть как минимум 3-х человек. Итак, я добавил следующий код в исходное рабочее заявление, чтобы проверить наличие громоздких предметов. Код должен проверять объемные элементы. 1-й тест: если нет громоздких предметов И manHrs/9 < 2 = установлено 2 человека.
2-й тест: если есть громоздкие предметы И manHrs/9 < 2 = установлено 3 человека.

// determines # of men needed to stay <= 9 hours and sets a 2 man minimum 
**// Also determines if there is a bulky item if true sets a 3 man minimum**  
    var menQty; 

    if **(countBLKY = 0 &&** (Math.ceil(manHrs/9) < 2)**)** 
    { 
     menQty = 2; 
    } 
    **else if (countBLKY != 0 && (Math.ceil(manHrs/9) < 2)) 
    { 
     menQty = 3; 
    }** 
    else 
    { 
     menQty = Math.ceil(manHrs/9); 
    } 

Сценарий выполняет раздел ELSE кода. Я думаю, что есть проблема синтаксиса, потому что функция ниже должна установить переменную countBLKY в 0 или другое целое число.

Вот функция, которая передает переменную countBLKY. Функция работает нормально, и при просмотре на веб-странице раздел «Объемный элемент» показывает либо 0, либо большее число. (Большая вкладка материала на веб-странице)

function addBLKY() { 

    var bbyG = document.moveQuote.BLKY_babyGrandPiano.value * 1; 
    var spnt = document.moveQuote.BLKY_SpinetPiano.value * 1; 
    var uprt = document.moveQuote.BLKY_uprightPiano.value * 1; 
    var bgtv = document.moveQuote.BLKY_bigScreenTV.value * 1; 
    var pTbl = document.moveQuote.BLKY_poolTable.value * 1; 
    var pBall = document.moveQuote.BLKY_PinballVideoGame.value * 1; 

    var countBLKY = bbyG + spnt + uprt + bgtv + pTbl + pBall; 

    document.moveQuote.BLKY_total.value = countBLKY; 
} 

Надеюсь, что все ясно, дайте мне знать, если есть что-то, что нет.

+1

«2-й тест: если есть громоздкие предметы И manHrs/9 <2 = установлено 3 человека». Не связанный с проблемой, но я думаю, что вы хотите '<3' здесь. В противном случае, если значение равно 2, оно останется 2. –

ответ

3
if (countBLKY = 0 && (Math.ceil(manHrs/9) < 2)) 
//   ^

Это назначение, а не comparison. Кроме того, вы должны сократить свой код на:

var menQty = Math.ceil(manHrs/9); 

if (countBLKY == 0) 
    menQty = Math.max(menQty, 2); // at least two 
else 
    menQty = menQty < 2 ? 3 : menQty; // instead of one send three but two are OK 

Обратите внимание на странность с минимальным mancount для громоздких предметов, вы, вероятно, есть ошибка в вашем коде нет.

+0

Спасибо за укороченный код Bergi! В проверке элемента countBLKY есть ошибка, но я не могу понять, что это такое. Переменная countBLKY имеет значение, которое выводится на веб-странице. – Craig

+0

Прочтите первое предложение моего ответа. – Bergi

+0

Извините, это была опечатка, когда я вошел сюда сюда на этом сайте. Я согласен, в чеке countBLKY есть ошибка, но я не смог понять это. Переменная countBLKY имеет значение, которое выводится на веб-странице, поэтому я знаю, что оно получает значение. Функция, которая устанавливает countBLKY, появляется много строк перед оператором if-else, который устанавливает минимум 2 или 3 человека. – Craig