2017-04-24 14 views
0

私は変数xを解決しようとしています。私はD変数に問題があると思います。変数Dは、入力されたそれぞれの数値を加算することになっています。wたとえば、入力が3つの場合はD = w[0]+w[1]+w[2]、入力が2つの場合はD = w[0]+w[1]となります。実goal_grade = 90.0を持つ値、= 20 exam_weight、4つの余分なカテゴリ、= 10 w[1] = 100 p[1] = 20 w[2]p[2] = 95.98、= 30 w[3]p[3] = 95.47、及びw[4] = 20、p[4] = 96.47を有します。 .. xは約62と等しいはずですが、代わりに私はいくつかの巨大な数字を取得します。私の計算がうまくいかないのはなぜですか?

<html> 
 

 
<head> 
 
    <script type='text/javascript'> 
 
    var w = []; 
 
    var p = []; 
 
    var C = 0; 
 
    var D = 0; 
 

 
    function addFields() { 
 
     // Number of inputs to create 
 
     var number = document.getElementById("category_weight").value; 
 
     // Container <div> where dynamic content will be placed 
 
     var container = document.getElementById("container"); 
 
     // Clear previous contents of the container 
 
     while (container.hasChildNodes()) { 
 
     container.removeChild(container.lastChild); 
 
     } 
 
     for (i = 0; i < number; i++) { 
 
     // create a row element to contain each pair 
 
     var row = document.createElement("div"); 
 
     row.id = 'row' + i 
 

 
     row.appendChild(document.createTextNode("Category " + (i + 1) + " weight: ")); 
 
     var weight_input = document.createElement("input"); 
 
     weight_input.type = "number"; 
 
     weight_input.name = "weight"; 
 
     row.appendChild(weight_input); 
 

 
     row.appendChild(document.createTextNode("Category " + (i + 1) + " percentage: ")); 
 
     var percentage_input = document.createElement("input"); 
 
     percentage_input.type = "number"; 
 
     percentage_input.name = "percentage"; 
 
     row.appendChild(percentage_input); 
 

 
     // append inputs to row instead of container, then append each row to container 
 
     container.appendChild(row); 
 
     } 
 
    } 
 

 
    function weighted() { 
 

 
     var container = document.getElementById("container"); 
 
     var rows = container.children; 
 
     for (var i = 0; i < rows.length; i++) { 
 
     var row = rows[i]; 
 
     w[i] = row.children[0].value; // or row.querySelectorAll('[name=weight]').value; 
 
     p[i] = row.children[1].value; 
 

 
     } 
 

 
     for (var i = 0; i < rows.length; i++) { 
 
     // You can do as much calculation here with w[i] & p[i] 
 
     C += w[i] * p[i]; 
 
     D += w[i]; 
 

 
     } 
 
     console.log(C); 
 
     console.log(D); 
 

 
     var x = ""; 
 
     var A = parseFloat(document.getElementById("goal_grade").value); 
 
     var B = parseFloat(document.getElementById("exam_weight").value); 
 

 

 
     x = (A * (D + B) - C)/B; 
 

 
     if (x <= 0) { 
 
     x = 0; 
 
     } 
 

 
     document.getElementById("result").innerHTML = x; 
 

 
    } 
 
    </script> 
 
</head> 
 

 
<body> 
 
    <span>What final percentage in the class are you trying to reach or stay   above?</span> 
 
    <input type="number" id="goal_grade" name="goal_grade" /> 
 

 
    <br> 
 
    <br> 
 

 
    <span>What percent is the final exam weighted?</span> 
 
    <input type="number" id="exam_weight" name="exam_weight" /> 
 

 
    <br> 
 
    <br> 
 

 
    <span>How many extra weighted categories are there?</span> 
 
    <input type="number" id="category_weight" name="category_weight" value=""> <br /> 
 
    <button type="button" onclick="addFields()">Submit </button> 
 
    <div id="container"></div> 
 

 
    <br> 
 
    <br> 
 

 
    <input type="button" value="Calculate" onclick="weighted()" /> 
 

 
    <br> 
 
    <br> 
 

 
    <span>You will need to get <p id="result" name="r1"> </p> points out of the ... <p id="totpoints" name="tot_points"> </p> points possible on the final" 
 
</span> 
 

 
</body> 
 

 
</html>

+0

ヒント:問題を解決するには、機能していないjavascript関数(たとえば、入力フィールドをjavascriptの値の例に置き換える)のみに問題を分けるようにしてください。 –

+0

その他のヒント:問題の詳細な説明と問題を解決しようとしたもの –

+0

これは良いですか? –

答えて

0

だけ

C += parseFloat(w[i] * p[i]); 
    D += parseFloat(w[i]); 

C += w[i] * p[i]; 
    D += w[i]; 

を変更して、あなたは良いです。

+0

すごくうまくいった! –

+0

Sevindim :)ただし、ボタンをもう一度押すと関数が再度呼び出され、計算全体が間違ってしまうため、変数の扱い方を再考する必要があります。試してみてください。 –

+0

Vayyyy ... Tesekkurler :) !!そして、私はちょうどそれをテストし、あなたが今言っていることを理解しています。それを速やかに修正する方法はありますか? –

関連する問題