기본 계산을 수행하는 간단한 양식을 작성한 클라이언트가 있습니다. 모두 N / A, 1, 2, 3을 포함하는 6 개의 드롭 다운이 있습니다. 그리고 마지막에는 이러한 드롭 다운에서 전체 평균이 계산됩니다. 클라이언트는 N / A가 포함 된 모든 드롭 다운을 완전히 무시하기를 원합니다. 즉, N / A가 6 개 드롭 다운 중 2 개에 해당하면 평균은 4 개 드롭 다운에서만 계산되어야합니다. 사용자가 N / A를 선택한 경우 특정 드롭 다운 필드를 무시하도록 전체 필드에 지시해야하는 논리 또는 if 문이 손실되었습니다. 여기에 내 코드가 있고 작동하지 않습니다 .. 몇 가지 아이디어를 제안하십시오.
<html>
<head><script type="text/javascript">
var aFieldNames = new Array();
aFieldNames["N/A"]=0;
aFieldNames["1"]=1;
aFieldNames["2"]=2;
aFieldNames["3"]=3;
var nCount = 0;
var nSum = 0;
event.value = 0;
for(i = 0; i < aFieldNames.length; i++)
{
if(this.getField(aFieldNames[i]).valueAsString != "N/A")
{
nCount++;
nSum += parseFloat(this.getField(aFieldNames[i]).value);
}
}
if(nCount != 0)
{
event.getElementById("bpover").value = nSum / nCount;
}
</script>
</head>
<body>
<select name="Value[]" onChange="alert(this.value):">
<option name="N/A">N/A</option>
<option name="1">1</option>
<option name="2">2</option>
<option name="3">3</option>
</select><br>
<select name="Value[]" onChange="alert(this.value):">
<option name="N/A">N/A</option>
<option name="1">1</option>
<option name="2">2</option>
<option name="3">3</option>
</select><br>
<select name="Value[]" onChange="alert(this.value):">
<option name="N/A">N/A</option>
<option name="1">1</option>
<option name="2">2</option>
<option name="3">3</option>
</select><br>
<select name="Value[]" onChange="alert(this.value):">
<option name="N/A">N/A</option>
<option name="1">1</option>
<option name="2">2</option>
<option name="3">3</option>
</select><br>
<select name="Value[]" onChange="alert(this.value):">
<option name="N/A">N/A</option>
<option name="1">1</option>
<option name="2">2</option>
<option name="3">3</option>
</select><br>
<br>
avg <input type="text" name="Average" ID="bpover" readonly>
</body>
</html>
여기 있습니다! @Shakti Phartiyal의 답변에는 잘못된 것들에 대한 설명이 있습니다.
function calcAvg(){
//Get all elements with 'class="select"'
var selects = document.getElementsByClassName("select");
//Initialize vars
var avg = 0;
var count = 0;
//Calculate average
for(var i=0;i<selects.length;i++){
if(selects[i].value!="N/A"){
count++;
avg+=Number(selects[i].value);
//Alert for debugging purposes
//alert(selects[i].value+" "+avg);
}
}
avg=avg/count;
//Output average
document.getElementById("bpover").value=avg;
}
<select class="select" name="Value[]" onChange="calcAvg();">
<option name="N/A">N/A</option>
<option name="1">1</option>
<option name="2">2</option>
<option name="3">3</option>
</select><br>
<select class="select" name="Value[]" onChange="calcAvg();">
<option name="N/A">N/A</option>
<option name="1">1</option>
<option name="2">2</option>
<option name="3">3</option>
</select><br>
<select class="select" name="Value[]" onChange="calcAvg();">
<option name="N/A">N/A</option>
<option name="1">1</option>
<option name="2">2</option>
<option name="3">3</option>
</select><br>
<select class="select" name="Value[]" onChange="calcAvg();">
<option name="N/A">N/A</option>
<option name="1">1</option>
<option name="2">2</option>
<option name="3">3</option>
</select><br>
<select class="select" name="Value[]" onChange="calcAvg();">
<option name="N/A">N/A</option>
<option name="1">1</option>
<option name="2">2</option>
<option name="3">3</option>
</select><br>
<br>
avg <input type="text" name="Average" id="bpover" readonly>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다