簡體   English   中英

JavaScript 計算器只返回“NaN”

[英]JavaScript calculator just returns "NaN"

我正在為我玩的游戲制作計算器,每當我運行它時,它只返回兩個值的“NaN”,只有一個值實際返回它應該返回的值。 返回 NaN 的兩個值是通過 switch 語句運行的值,我發現從 switch 語句中獲得的值是未定義的,所以我認為這就是問題所在。 我嘗試在 StackOverflow 上尋找類似的其他問題,但我找到了一些,但他們的答案對我不起作用。

 var iron_cost = 0 var string_cost = 0 var spider_e_cost = 0 var tami_1_amount = 0 var tami_2_amount = 0 var tami_1_tier = 0 var tami_2_tier = 0 var ta_per_min_1 = 0 var ta_per_min_2 = 0 var cpt_tpc = 0 var cph_tpc = 0 var cpd_tpc = 0 function calculate_tpc() { var string_cost = document.getElementById("string_tpc").value; var spider_e_cost = document.getElementById("spider_eye_tpc").value; var iron_cost = document.getElementById("iron_tpc").value; var tami_1_tier = document.getElementById("minions_tier_1_tpc").value; var tami_2_tier = document.getElementById("minions_tier_2_tpc").value; var tami_1_amount = document.getElementById("minions_1_tpc").value; var tami_2_amount = document.getElementById("minions_2_tpc").value; var step1 = string_cost * 3.16; var step2 = iron_cost * 0.2; var step3 = step1 + step2 + spider_e_cost; switch (tami_1_tier) { case 1: var ta_per_min_1 = 2; break; case 2: var ta_per_min_1 = 2; break; case 3: var ta_per_min_1 = 2.3; break; case 4: var ta_per_min_1 = 2.3; break; case 5: var ta_per_min_1 = 2.6; break; case 6: var ta_per_min_1 = 2.6; break; case 7: var ta_per_min_1 = 3.15; break; case 8: var ta_per_min_1 = 3.15; break; case 9: var ta_per_min_1 = 4.1; break; case 10: var ta_per_min_1 = 4.1; break; case 11: var ta_per_min_1 = 6; break; } switch (tami_2_tier) { case 1: var ta_per_min_2 = 2; break; case 2: var ta_per_min_2 = 2; break; case 3: var ta_per_min_2 = 2.3; break; case 4: var ta_per_min_2 = 2.3; break; case 5: var ta_per_min_2 = 2.6; break; case 6: var ta_per_min_2 = 2.6; break; case 7: var ta_per_min_2 = 3.15; break; case 8: var ta_per_min_2 = 3.15; break; case 9: var ta_per_min_2 = 4.1; break; case 10: var ta_per_min_2 = 4.1; break; case 11: var ta_per_min_2 = 6; break; } var step4 = ta_per_min_1 * tami_1_amount; var step5 = ta_per_min_2 * tami_2_amount; var step6 = step4 + step5; var step7 = step6 * step3; var step8 = step7 * 60; var step9 = step8 * 24; document.getElementById("cpt_tpc").innerHTML = step3; document.getElementById("cph_tpc").innerHTML = step8; document.getElementById("cpd_tpc").innerHTML = step9; document.getElementById("test1").innerHTML = ta_per_min_1; document.getElementById("test2").innerHTML = ta_per_min_2; }
 html, body { text-align: center; };
 <html> <head> <link rel="stylesheet" type="text/css" href="interface.css" /> <body> <h1>Calculator</h1> <br /> String Price: <input type="text" id="string_tpc" value="0"> <br /> Spider Eye Price: <input type="text" id="spider_eye_tpc" value="0"> <br /> Iron Price: <input type="text" id="iron_tpc" value="0"> <br /> Minions Tier 1: <input type="text" id="minions_tier_1_tpc" value="0"> Minion Amount 1: <input type="text" id="minions_1_tpc" value="0"> <br /> Minions Tier 2: <input type="text" id="minions_tier_2_tpc" value="0"> Minion Amount 2: <input type="text" id="minions_2_tpc" value="0"> <br /> <button onclick="calculate_tpc()">Calculate</button> <br /> Current Coins per Tarantula: <span id="cpt_tpc">0</span> <br /> Coins per hour: <span id="cph_tpc">0</span> <br /> Coins per day: <span id="cpd_tpc">0</span> <script type="text/javascript" src="main.js"></script> </body> </head> </html>

主要問題是使用輸入中的字符串。 進一步的效果是不會從switch語句中獲取任何值,因為該值是一個字符串,並且在所有情況下,您都有數字。 這里的比較是嚴格的,例如===

對於未知值,您可以返回 function 並省略未給定值的計算。

 'use strict'; function calculate_tpc() { var string_cost = +document.getElementById("string_tpc").value; var spider_e_cost = +document.getElementById("spider_eye_tpc").value; var iron_cost = +document.getElementById("iron_tpc").value; var tami_1_tier = +document.getElementById("minions_tier_1_tpc").value; var tami_2_tier = +document.getElementById("minions_tier_2_tpc").value; var tami_1_amount = +document.getElementById("minions_1_tpc").value; var tami_2_amount = +document.getElementById("minions_2_tpc").value; var step1 = string_cost * 3.16; var step2 = iron_cost * 0.2; var step3 = step1 + step2 + spider_e_cost, ta_per_min_1, ta_per_min_2; switch (tami_1_tier) { case 1: case 2: ta_per_min_1 = 2; break; case 3: case 4: ta_per_min_1 = 2.3; break; case 5: case 6: ta_per_min_1 = 2.6; break; case 7: case 8: ta_per_min_1 = 3.15; break; case 9: case 10: ta_per_min_1 = 4.1; break; case 11: ta_per_min_1 = 6; break; default: return; } switch (tami_2_tier) { case 1: case 2: ta_per_min_2 = 2; break; case 3: case 4: ta_per_min_2 = 2.3; break; case 5: case 6: ta_per_min_2 = 2.6; break; case 7: case 8: ta_per_min_2 = 3.15; break; case 9: case 10: ta_per_min_2 = 4.1; break; case 11: ta_per_min_2 = 6; break; default: return; } var step4 = ta_per_min_1 * tami_1_amount; var step5 = ta_per_min_2 * tami_2_amount; var step6 = step4 + step5; var step7 = step6 * step3; var step8 = step7 * 60; var step9 = step8 * 24; document.getElementById("cpt_tpc").innerHTML = step3; document.getElementById("cph_tpc").innerHTML = step8; document.getElementById("cpd_tpc").innerHTML = step9; //document.getElementById("test1").innerHTML = ta_per_min_1; //document.getElementById("test2").innerHTML = ta_per_min_2; }
 <h1>Calculator</h1> <br /> String Price: <input type="text" id="string_tpc" value="0"> <br /> Spider Eye Price: <input type="text" id="spider_eye_tpc" value="0"> <br /> Iron Price: <input type="text" id="iron_tpc" value="0"> <br /> Minions Tier 1: <input type="text" id="minions_tier_1_tpc" value="0"> Minion Amount 1: <input type="text" id="minions_1_tpc" value="0"> <br /> Minions Tier 2: <input type="text" id="minions_tier_2_tpc" value="0"> Minion Amount 2: <input type="text" id="minions_2_tpc" value="0"> <br /> <button onclick="calculate_tpc()">Calculate</button> <br /> Current Coins per Tarantula: <span id="cpt_tpc">0</span> <br /> Coins per hour: <span id="cph_tpc">0</span> <br /> Coins per day: <span id="cpd_tpc">0</span>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM