2015-11-26 3 views
0

У меня есть 3 выпадающего списка со значениями N/A, 3, 5, 6. При изменении события, если я меняю значение первого выпадания, счет должен быть 1 всегда, но всякий раз, когда я меняю значение, значение продолжает увеличиваться. Я знаю, что мой счетчик ошибается, но не понимает, как это исправить.Примечание в состоянии установить счет при изменении выпадающего меню

$count = 0; 
$maxcount = 3; 
$arrOfLevel2ElementId.each(function() { 
    arrOfLevel2ElementId = $(this).attr('id'); 
    $("#" + arrOfLevel2ElementId).on('change', function() { 
     level2ElementVal = $(this).val(); 
     if (level2ElementVal == "N/A") { 
      if ($count > 0) { 
       $count--; 
      } else { 
       $count; 
      } 
      showOutput($sum); 
      return false; 
     } else { 
      if ($count <= $maxcount) { 
       $count++; 
      } else { 
       $count; 
      } 
      alert($count); 
      $sum = parseInt(level2ElementVal); 
      showOutput($sum); 
     } 
+0

Ваше описание проблемы на самом деле не имеет смысла. Не могли бы вы показать нам рабочий пример проблемы в http://jsfiddle.net? По крайней мере, увидеть ваш HTML поможет. –

+0

JsFiddle или этого не произошло :-) –

ответ

0

Это тот случай, поскольку, как только вы меняете выпадающий список, вы вызываете функцию.

Здесь вы сообщаете, что if(level2ElementVal == "N/A") вы уменьшаете количество.

Но в заявлении else, означающем, что вы выбираете 3, 5 или 6, вы проверяете, нет ли счетчика в maxcount. Это не так, если $count = 1. Затем вы увеличиваете его. Это объясняет, что он увеличивается при изменении значения.

Я не знаю, почему у вас есть $maxcount, но если бы вы изменить его на 1, мое предположение, что ваш счетчик не должен превышать 1.

EDIT:

Если то, что я вы правильно поняли из своих комментариев, что хотите убрать три номера, если только на N/A.

Попробуйте эту скрипку: https://jsfiddle.net/7b21b699/1/

Он устанавливает поле значения, когда последнее поле изменяется, и проверяет значения в этой точке. Затем суммирует их при необходимости и делит их правильно.

$("#box3").on('change', function(){ 
    var val1 = $("#box1").val(); 
    var val2 = $("#box2").val(); 
    var val3 = $("#box3").val(); 
    var sum = 0; 
    var count = 0; 

    if(val1 != "N/A"){ 
     sum += parseInt(val1); 
     count++; 
    } 
    if(val2 != "N/A"){ 
     sum += parseInt(val2); 
     count++; 
    } 
    if(val3 != "N/A"){ 
     sum += parseInt(val3); 
     count++; 
    } 

    var result = sum/count; 

    $("#value").text(result); 

}); 


<select class="form-control" id="box1" name="a"> 
    <option value="" selected="selected">Select a value</option> 
    <option value="N/A">N/A</option> 
    <option value="3">3</option> 
    <option value="5">5</option> 
    <option value="7">7</option> 
    <option value="10">10</option> 
</select> 
<select class="form-control" id="box2" name="a"> 
    <option value="" selected="selected">Select a value</option> 
    <option value="N/A">N/A</option> 
    <option value="3">3</option> 
    <option value="5">5</option> 
    <option value="7">7</option> 
    <option value="10">10</option> 
</select> 
<select class="form-control" id="box3" name="a"> 
    <option value="" selected="selected">Select a value</option> 
    <option value="N/A">N/A</option> 
    <option value="3">3</option> 
    <option value="5">5</option> 
    <option value="7">7</option> 
    <option value="10">10</option> 
</select> 

<div id ="value">value comes here</div> 
+0

На самом деле я должен подытожить выбранное значение выпадающего списка и делить на их счет, но если это «Н/Д», чем мой счет не будет увеличиваться. –

+0

Сложно понять, чего вы пытаетесь достичь. Возможно, вы можете немного расширить свой вопрос. –

+0

Я добавил немного кода здесь https://jsfiddle.net/mahajansupriya1/1Lk25jth/ –

Смежные вопросы