私は現在、学習目的の電卓に取り組んでおり、ある意味ではすべてが機能しますが、私が望んでいる方法では機能しません。
コードの加算部分は次のとおりです。
HTML:
<input type="number" id="int1" />
<input type="number" id="int2" />
<input type="button" onClick="sumOf();" />
<div id="result"></div> // To display the result
JS:
var int1 = document.getElementById("int1").value;
var int1 = document.getElementById("int2").value;
var result = document.getElementById("result");
function sumOf(int1, int2) {
result.innerHTML = parseFloat(int1) + parseFloat(int2);
}
現状では、onClick イベント経由で関数を呼び出すと NaN になります。int の型をチェックすると、「未定義」になります。したがって、変数を関数内に配置すると、関数がそれらに到達できるようになったため、正常に機能します。
私の質問は、関数外の変数にアクセスするにはどうすればよいですか? オブジェクトを作成してみましたが、onClick イベントでオブジェクト内の正しい関数を参照する際に問題が発生したため、「objectName.functionInsideTheObject();」を試しました。結果、うまくいきませんでした。
どうすればこれを機能させることができますか?他の計算用に新しい関数が追加され、常に変数をコピーして貼り付けるのは面倒です。
編集:
私の問題は、変数宣言の「.value」に関係しています。変数をそのように宣言すると:
var int1 = document.getElementById("int1"); // Not getting the value directly
var int2 = document.getElementById("int2");
そして、次のように関数内の変数の値を参照します。
function sumOf() {
result.innerHTML = parseFloat(int1.value) + parseFloat(int2.value);
}
それは正常に動作します。.value がグローバル スコープで機能しない理由がわかりません。まだ完璧ではありませんが、退屈ではありません。