1

私が書いた JavaScript をデバッグしようとしていますが、なぜ機能しないのかわかりません。変数をハードコーディングすると問題なく動作しますが、document.getElementById('id').value を使用して変数を取得すると失敗します。

以下の例は正常に動作しますが、コメント行のコメントを外すとすぐに動作しません。2 番目のセクションの前後に変数を出力すると、同じように見えます。

本当に何が起こっているのかわかりません。多分私はそれで寝る必要がありますが、誰かが素晴らしい提案を持っていれば!

roof_width = 5;
roof_depth = 3;
panel_width = 2;
panel_depth = 1;
panel_power = 200;
roof_margin = 0.100;
panel_gap = 0.05;

roof_width = document.getElementById('roof_width').value;
roof_depth = document.getElementById('roof_depth').value;
// panel_width = document.getElementById('panel_width').value;
// panel_depth = document.getElementById('panel_depth').value;
panel_power = document.getElementById('panel_power').value;
// roof_margin = document.getElementById('roof_margin').value;
panel_gap = document.getElementById('panel_gap').value;
4

4 に答える 4

3

テキスト ボックスにある数字を追加しようとしていますか? +JavaScript の変数型付けシステムが (演算子のオーバーロードと組み合わされて)、 2 + 2 === 4(数字の追加) しかし'2' + '2' === '22'(文字列の連結) が機能する方法のためです。たとえば、行を次のように変更してみてください。

panel_width = parseFloat(document.getElementById('panel_width').value);

または代わりに:

panel_width = Number(document.getElementById('panel_width').value);

これにより、JavaScript が数値を文字列ではなく数値として扱うようになります。

于 2010-11-12T21:21:20.220 に答える
1

JavaScript パラメーターは、HTML 要素を呼び出すのと同じ方法で呼び出すことはできません。電話するには

document.getElementById('roof_margin').value;

HTML フォーム要素に「roof_margin」を割り当てる必要があります。

于 2010-11-12T21:06:35.167 に答える
0

おそらく、同じ ID を持つ複数の dom 要素がありますか? dom 要素 ID は一意でなければならないことに注意してください。javascript と html をやり取りするには、jquery を使用することをお勧めします。

于 2010-11-12T21:06:03.597 に答える
0

コードが onload 関数内にあることを確認してください。そうしないと、要素がまだ DOM にロードされていない可能性があります。

window.onload = funciton(){/* code here */};
于 2010-11-12T21:22:33.937 に答える