2016-10-12 7 views
0

変数をHTML形式で入力し、すべてのY点を計算する関数を作成しようとしていますが、何らかの理由でこのコード行が機能しません。 I私の構文が間違っているのか何か分からないのですか? 完全なコードはここにある:Javascript数学関数リゾルバ

var m = document.getElementById("m").value; 
var c = document.getElementById("c").value; 
var p = document.getElementById("p").value; 
var x = -10; 
var points; 
var y = -10; 
var functionPoints = points[0]; 
function functionResolver(m, c, p) { 
     while (x > -11 && x < 11) { 
     m * (x * x) + c * x + p = points; 
     points[y] = points; 
     y += 1; 
     x += 1; 
     }; 
    }; 
+2

'点= M×(X * X)+ C *のX + Pを参照してください; '。コンソールと[mcve]からのエラーメッセージも含める必要があります。 – j08691

+0

'points [0]'と 'points [y]'は何を期待していますか? –

答えて

0

プログラムはPEMAの順序でそれを行うだろうし。計算の周りに余分な角括弧を置くか、計算を小さな部分に分割することができます。

•括弧 (左から右)(左から右へ)•指数精度 •乗算/除算 •加算/減算。

例えば

(M×(X * X))+ C * X + P =ポイント。

のM *(X * X)+(C *とのX)+ P =ポイントに異なるであろう。

**のM *(X * X)+(C×(X + P))=ポイントに異なるであろう

また部品を使用すると、数値に文字列からの入力を変換する必要があり、数字はそれほど数()言及した他の回答として

+0

私が書いたものを見てください:ポイントは、右側ではなく右側でなければなりません。ごめんなさい。私の間違い。また、ポイントと呼ばれる2つの別々の変数があります。つまり、別の名前を指定して、コードの前に宣言する必要があります。 –

0

document.getElementById("m").valuestringです。

var m = Number(document.getElementById("m").value);

を行うと、あなたは、右側の割り当てが必要です。

points[y] = m * (x * x) + c * x + p; 
0

を使用して数値に変換できない場合があります。また、式の左側に変数名を置くように注意してください。あなたのポイント配列変数(whileループの上に宣言されています)を計算結果で上書きしないでください。ここでは、単一の計算結果を格納するローカルポイント変数を宣言します。文字列にあなたの入力を変換するには、いくつかの方法がありますのparseIntを使用して

var point = parseFloat(m * (x * x) + c * x + p); 
points[y] = point; 

は、parseFloatはを(あなたは小数点入力をサポートする場合)使用

var point = parseInt(m * (x * x) + c * x + p); 
points[y] = point; 

番号を使用して(基本的にparseIntと同じ、What is the difference between parseInt() and Number()?参照):

var point = Number(m * (x * x) + c * x + p); 
points[y] = point; 

以下のe XAMPLE、我々は(あなたはもちろん上記の3文字列から数値へのいずれかの方法を使用することができます)1に2行を凝縮することにより、ローカルに宣言小数点変数の必要性を削除します。

points[y] = parseFloat(m * (x * x) + c * x + p); 
0

私はあなたが何を意味するかわかりませんここでポイント[y]で... yは-10で初期化され、ポイント[-10]は基本的にポイントのインデックス「-10」にアクセスしようとしていることを意味します。

0

無効な右手の割り当てと入力を数値に変換する問題に加えて、DOMがロードされるのを待つ必要があります。また、ユーザーが入力に値を入力できるようにする必要がありますフィールド。現在のコードでは、ボタンをクリックするのを待つのではなく、即座に値をロードしようとします。これを実装する方法の完全例えば

、このgist

let elM, elC, elP, elR, points; 
let min = -10; 
let max = 10; 
document.addEventListener("DOMContentLoaded",function(){ 
    elM = document.getElementById("m"); 
    elC = document.getElementById("c"); 
    elP = document.getElementById("p"); 
    elR = document.getElementById("result"); 
    document.getElementById("run").addEventListener("click",calculate); 
}); 

function functionResolver(m, c, p) { 
    let points = []; 
    for(let x=min; x<=max; x++) { 
    points.push([x,m * (x * x) + c * x + p]) 
    } 
    return points; 
} 
function calculate() { 
    points = functionResolver(+elM.value,+elC.value,+elP.value); 
    //wipe result table, creating col headings 
    elR.innerHTML = "<tr><th>x</th><th>y</th></tr>"; 
    points.forEach(coord => { 
    elR.innerHTML += `<tr><td>${coord[0]}</td><td>${coord[1]}</td></tr>\n`; 
    }); 
}