2016-04-16 9 views
-1

このコードは、2つのユーザー入力を乗算して計算することになっています。しかし、出力は、通常は予想される代わりに、一貫して0、すなわち5 * 5 = 0である。なぜこれが起こっているのか分かりません。変数を関数に正しく渡していないのですか?なぜ私の関数は0(ゼロ)を出力していますか?

var x = document.getElementById("a"); 
var y = document.getElementById("b"); 

は、次にような値を使用します。私はただの要素をつかむ、私は適切に参照対値を理解していない可能性がありますように感じる(私は現在、JavaScriptを勉強しています)

var x = document.getElementById("a").value; 
var y = document.getElementById("b").value; 
var button = document.getElementById("button"); 

button.addEventListener('click', function() { 
    calculator(x,y); 
}, false); 

function calculator(a,b) { 
    var output = a * b; 
    document.getElementById("answer").innerHTML = output; 
    console.log(output); 
} 
+1

あなたは、一度だけ、あなたのフィールドの値を取得するのparseIntを使用してみてください、スクリプトが値を文字列として処理していることが考えられおそらくあなたのページがロードされたときに実行されます。フィールドは空です。そのため、0の値をコールバック関数に対応するコード( 'var x = ...;')を入れてください。 – Blackhole

答えて

2

省略値キャプチャ関数のパラメータです。

button.addEventListener('click', function() { 
    calculator(x.value, y.value); 
}, false); 

値が空で関数に渡していたときに値を取得していました。

DEMO

+1

ありがとうございます!それだった!ほんとうにありがとう。 – crescentfresh

0

それはあなたのスクリプトがあるとき、(A)*のparseInt(b)は

関連する問題