私は短期のスクリプトを作成して、金額(プリンシパル)の合計金額を特定の金利毎年末の年間利益から税金を差し引いて、望ましい合計を返します。その後、合計は、所望の合計に達するかまたはそれを超えるまで、同じ金利で完全に再投資される。スクリプトは、希望の合計に達するのに必要な年数を返します。Javascriptプログラムが入力フィールドから値を取得できないifステートメントが奇妙な結果を返す
プリンシパルがすでに希望の合計と等しいか、それよりも優れている場合は、投資は不要なので「0」を返します。
機能自体が(数学の一部がない問題です)うまく動作しますが、私は量を手動で入力することができるように入力フィールドを設定しようとすると、何も動作し、私のブラウザがクラッシュした...
<!DOCTYPE html>
<html>
<body>
Principal: <input type="number" id="pri" value="1000"><br>
Interest: <input type="number" id="int" value="0.05"><br>
Tax: <input type="number" id="tax" value="0.18"><br>
Desired: <input type="number" id="des" value="1100"><br>
<button onclick= "calculateYears()">Return Years</button>
<p id= "test"></p>
<script>
function calculateYears(principal, interest, tax, desired) {
\t var years = 0;
\t principal = document.getElementById("pri").value;
\t interest = document.getElementById("int").value;
\t tax = document.getElementById("tax").value;
\t desired = document.getElementById("des").value;
\t if (principal < desired) {
\t do {
\t var first = principal * interest;
\t var second = principal * interest * tax;
\t var net = first - second;
\t principal += net;
\t years ++;
\t }
\t while (principal < desired);
\t document.getElementById("test").innerHTML += years + "<br>";
\t } else {
\t document.getElementById("test").innerHTML += years + "<br>"; \t \t
\t } \t \t \t \t
}
</script>
</body>
</html>
Iは「」(空のフィールド)に各値を設定し、それらを手動で入力し、変数名を置き換える構造を変え、ループの他のタイプを使用して、コードを簡素化し、それが理解する分析しようとしました何がうまくいかない。
<!DOCTYPE html>
<html>
<body>
Principal: <input type="number" id="pri" value="999"><br>
Desired: <input type="number" id="des" value="1100"><br>
<button onclick= "calculateYears()">Return Years</button>
<p id= "test"></p>
<script>
function calculateYears(numberOne, numberTwo) {
numberOne = document.getElementById("pri").value;
numberTwo = document.getElementById("des").value;
if (numberOne < numberTwo) {
\t document.getElementById("test").innerHTML = numberOne;
} else {
\t document.getElementById("test").innerHTML = numberTwo; \t
} \t \t \t \t
}
</script>
</body>
</html>
上記のコードは、何らかの形で動作します(それがクラッシュして何かを返していない)ではなく、正しくすべてのケースについて:私はこれに降りました。たとえば、numberOneが "999"に設定され、numberTwoが "1100"に設定されている場合、 "1100"が返されます(numberOne < numberTwo、したがって( "test")innerHTML = numberOne)。
私は何が起こっているのか、私は自分自身をもっと助けるために使うことができるリソースを理解していません。私が間違っているとあなたに教えてくれませんか?
明快にするためのちょっとしたヒント:あなたの関数から引数を取り除いてください。あなたは何も渡していません。あるいは、関数内のdomから引き離すのではなく、実際にパラメータとして渡してください。 – Faust
"関数から引数を削除する" 引数を渡すためにコードを書き直すにはどうすればよいですか?私はまだそれがいかに働くかの流れを完全には得られない。 「パラメータとして値を渡す」 私に例を教えてください。 – Octavio
あなたのhtmlコードは適切にタグを閉じることができません。良いコードは常にトラブルシューティングを単純にしてください。/>とbrで入力を閉じてください。私もいつも名前を入れていますが、それはオプションですと思います。 別のポイント:どのブラウザ(JSエンジン)とバージョンを使用していますか? –