2017-04-04 8 views
1

基本的な計算を行うための単純なフォームを作成したクライアントがありますか? N/A、1,2,3を含む6つのドロップダウンがあります。最後に、これらのドロップダウンから全体平均が計算されます。クライアントがN/Aを含むドロップダウンを完全に無視したい場合N/Aが6ドロップダウンのうちの2つにある場合、平均は4ドロップダウンでのみ計算する必要があります。私は論理が失われたばかりか、ユーザーがN/Aを選択した場合に特定のドロップダウンフィールドを無視するようにトータルフィールドに指示する必要がある場合です。 ここに私のコードはありません。いくつかのアイデアを提案してください。"N/A"値を除くドロップダウンから平均を計算する方法

<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> 
+1

あなたのコードがある?? –

+1

コードが表示されます。 –

+0

@DebasishChoudhury答えがあなたを助けたら、それを受け入れる必要があります。 – Feathercrown

答えて

1

ここに行きます! @ 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>

+0

ありがとうございます。完璧に働いています –

+1

よろしくお願いします!常に喜んで助けてください。この回答があなたを助けたら、あなたはそれを受け入れるべきです(http://stackoverflow.com/help/accepted-answer)。 – Feathercrown

+0

私はそれを受け入れました...もう一度ありがとう... –

2

:まず、あなたの声明の中で

<select name="Value[]" onChange="alert(this.value):"> 

あなたは役に立たないを使用している。代わりにを使用します。

第二:

  • アプローチは、すべての選択ボックスをループする必要があります。
  • parseFloat()又はparseInt()を用いて数値になった値を変換して
  • 計算平均値としてN/Aを持たない選択ボックスの値を読みます。
  • 表示し、それ

以下のコードを参照してください:

<script> 
 
function calculateAverage() 
 
{ 
 
    var boxes = document.getElementsByTagName('select') 
 
    var nSum = 0; 
 
    var nCount = 0; 
 
    event.value = 0; 
 
    for(var i=0; i<boxes.length;i++) 
 
    { 
 
    \t if(boxes[i].value != "N/A") 
 
    { 
 
    \t alert(boxes[i].value); 
 
    \t nSum += parseFloat(boxes[i].value); 
 
     nCount++; 
 
    } 
 
    } 
 
    var avg = nSum/nCount; 
 
    document.getElementById('bpover').value = avg; 
 
} 
 
</script> 
 

 
<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> 
 
    <button onClick="calculateAverage()"> 
 
    Calculate 
 
    </button> 
 
    
 
    avg <input type="text" name="Average" ID="bpover" readonly>

関連する問題