我有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 :(得分:0)
这种情况是因为只要您更改下拉列表,就会调用该函数。
您在此声明if(level2ElementVal == "N/A")
减少了点数。
但是在else语句中,意味着您选择了3
,5
或6
,您可以检查计数是否不在maxcount。如果$count = 1
不是这种情况。然后你增加它。这解释了当你改变价值时它会增加。
我不确定你为什么会有$maxcount
,但是如果你要将它改为1,我的假设是你的数量不应超过1。
编辑:
如果我从您的评论中正确理解了您想要设置三个数字,除非它在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>