我正在为游戏制作一个计算器并按下这样的按钮:
<input type="button" value="Calculate" name="Calc_Button" onclick="cpbCalc()" class="button_is">
单击按钮时,我想运行cpbCalc()
功能
您可以在http://trial.6te.net/Calculators/cpbCalculatorNew.html
这是完整的HTML代码:
<!DOCTYPE html>
<html>
<head>
<title>
Cost Per Battle Calculator
</title>
</head>
<style>
.smaller{
width: 50px;
padding: 12px 10px;
margin: 0px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
.bigger{
width: 110px;
padding: 12px 10px;
margin: 0px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
.button_is{
width: 110px;
background-color: #4CAF50;
color: white;
padding: 14px 20px;
margin: 0px 0;
border: none;
border-radius: 4px;
cursor: pointer;
}
.button_is:hover {
background-color: #45a049;
}
div {
border-radius: 5px;
background-color: #badf6f;
padding:20px;
}
</style>
<body>
<div>
<!-- <label for="fname" id="fn">First Name</label> -->
<!-- <input type="text" id="fname" name="firstname"> -->
<!-- <button onclick="myFunction()">Calculate</button> -->
<table border="0">
<tr>
<td>
<center><img src="http://trial.6te.net/images/gold.gif"></img></center>
</td>
<td>
<center><img src="http://trial.6te.net/images/wood_s.gif"></img></center>
</td>
<td>
<center><img src="http://trial.6te.net/images/ore_s.gif"></img></center>
</td>
<td>
<center><img src="http://trial.6te.net/images/mercury_s.gif"></img></center>
</td>
<td>
<center><img src="http://trial.6te.net/images/sulphur_S.gif"></img></center>
</td>
<td>
<center><img src="http://trial.6te.net/images/crystal_S.gif"></img></center>
</td>
<td>
<center><img src="http://trial.6te.net/images/gems_S.gif"></img></center>
</td>
</tr>
<tr>
<td>
<input type="text" id="gold_" name="Gold" class="bigger">
</td>
<td>
<input type="text" id="wood_" name="Wood" class="smaller" value="0">
</td>
<td>
<input type="text" id="ore_" name="Ore" class="smaller" value="0">
</td>
<td>
<input type="text" id="mercury_" name="Mercury" class="smaller" value="0">
</td>
<td>
<input type="text" id="sulphur_" name="Sulphur" class="smaller" value="0">
</td>
<td>
<input type="text" id="crystals_" name="Crystals" class="smaller" value="0">
</td>
<td>
<input type="text" id="gems_" name="Gems" class="smaller" value="0">
</td>
</tr>
<tr>
<td>
Durability :<br>
<input type="text" id="currDura_" name="Current_Durability" class="smaller"> /
</td>
<td>
<input type="text" id="maxDura_" name="Maximum_Durability" class="smaller">
</td>
</tr>
<tr>
<td>
Repair Cost :<br>
<input type="text" id="repCost_" name="Repair_Cost" class="bigger">
</td>
</tr>
<tr>
<td>
Smith Efficiency :<br>
<input type="text" id="smithEffi_" name="Smith_Efficiency" class="smaller">
</td>
<td>
Smith Charges :<br>
<input type="text" id="smithCharge_" name="Smith_Charge" class="smaller">
</td>
</tr>
<tr>
<td colspan="7">
<center><input type="button" value="Calculate" name="Calc_Button" onclick="cpbCalc()" class="button_is"></center>
</td>
</tr>
<tr>
<td colspan="7">
<label id="result_"></label>
</td>
</tr>
</table>
</div>
<script language="JavaScript">
<!--
function cpbCalc() {
var currDura, maxDura, tempMaxDura, tempDura, totDura, optDura;
var iniCost, repCost;
var smithEffi, smithCharge;
var se, sc;
var totCostTillNow, costPerBattle = 0, minCPB;
var i;
var repCount = 1;
//Assigning the values
currDura = document.getElementById("currDura_").value;
maxDura = document.getElementById("maxDura_").value;
iniCost = document.getElementById("gold_").value;
repCost = document.getElementById("repCost_").value;
smithEffi = document.getElementById("smithEffi_").value;
smithCharge = document.getElementById("smithCharge_").value;
se = smithEffi / 100;
sc = smithCharge / 100;
tempMaxDura = maxDura;
tempDura = currDura;
totDura = tempDura;
totCostTillNow = parseFloat(iniCost);
costPerBattle = parseFloat(totCostTillNow / totDura);
minCPB = parseFloat(costPerBattle);
optDura = parseInt(tempMaxDura);
for(i=1; i<=maxDura; i++)
{
totCostTillNow += parseFloat(repCost * sc);
tempDura = parseInt(tempMaxDura * se);
totDura += parseInt(tempDura);
costPerBattle = parseFloat(totCostTillNow / totDura);
tempMaxDura -= 1;
if ( minCPB >= costPerBattle )
{
minCPB = parseFloat(costPerBattle);
optDura = parseInt(tempMaxDura);
}
}
document.getElementById("result_").value = eval(minCPB) + " gold at 0/"+ eval(optDura);
return 0;
//alert("minimum cost per battle = " + eval(minCPB) + "at 0/" + eval(optDura));
//-->
}
</script>
</body>
</html>
这里“result_”是我想提供最终答案的标签
当我单击按钮时,它应该运行“cpbCalc()
”函数,但它不会。
相反它什么都不做。
当我在Check中检查时,它没有显示任何错误。
你能帮助我为什么会这样,并为它提供解决方案吗?
答案 0 :(得分:0)
你必须替换:
document.getElementById("result_").value = eval(minCPB) + " gold at 0/"+ eval(optDura);
使用:
document.getElementById("result_").innerHTML = eval(minCPB) + " gold at 0/"+ eval(optDura);
标签没有“值”属性。这就是为什么它没有用,但你没有错误。
答案 1 :(得分:0)
你可以使用
如果该值将被重新启动
答案 2 :(得分:0)
调试器是你的朋友。
一些事情:
首先,当您从输入框中读取要在脚本中用作数字的值时,需要将其转换为数字。例如:
currDura = document.getElementById("currDura_").value;
应该是:
currDura = parseInt(document.getElementById("currDura_").value);
在生产代码中,这还需要执行错误检查(用户可能输入非数字值),但这适用于测试。
我看到你在代码中解析了一些值,但是在转换为数字之前你也使用了其中一些值(例如,`se = smithEffi / 100')。
其次,你真的应该避免使用eval
。如果您已将输入值转换为数字,则不需要这样做。
最后,value
不是标签的正确属性。我的建议是使用jQuery并分配如下内容:
$('#result_').text('text to show in label');
您可以使用innerHTML
属性,但我通常不建议这样做,因为您可能需要处理文本编码。
您可以使用纯JavaScript分配文本,但由于潜在的跨浏览器问题,它会更加复杂。有关如何执行此操作的一些示例,请参阅Cross-browser innerText for setting values。
答案 3 :(得分:0)
你的剧本中有一些拼写错误:
摘录:
function cpbCalc() {
var currDura, maxDura, tempMaxDura, tempDura, totDura, optDura;
var iniCost, repCost;
var smithEffi, smithCharge;
var se, sc;
var totCostTillNow, costPerBattle = 0, minCPB;
var i;
var repCount = 1;
//Assigning the values
currDura = +document.getElementById("currDura_").value;
maxDura = +document.getElementById("maxDura_").value;
iniCost = +document.getElementById("gold_").value;
repCost = +document.getElementById("repCost_").value;
smithEffi = +document.getElementById("smithEffi_").value;
smithCharge = +document.getElementById("smithCharge_").value;
se = smithEffi / 100;
sc = smithCharge / 100;
tempMaxDura = maxDura;
tempDura = currDura;
totDura = tempDura;
totCostTillNow = parseFloat(iniCost);
costPerBattle = parseFloat(totCostTillNow / (totDura == 0) ? 1 : totDura); // avoid division by zero
minCPB = parseFloat(costPerBattle);
optDura = parseInt(tempMaxDura);
for(i=1; i<=maxDura; i++)
{
totCostTillNow += parseFloat(repCost * sc);
tempDura = parseInt(tempMaxDura * se);
totDura += parseInt(tempDura);
costPerBattle = parseFloat(totCostTillNow / totDura);
tempMaxDura -= 1;
if ( minCPB >= costPerBattle )
{
minCPB = parseFloat(costPerBattle);
optDura = parseInt(tempMaxDura);
}
}
// For labels use textContent instead of value property
document.getElementById("result_").textContent = minCPB + " gold at 0/"+ optDura; // never use eval
return 0;
//alert("minimum cost per battle = " + eval(minCPB) + "at 0/" + eval(optDura));
//-->
}
.smaller{
width: 50px;
padding: 12px 10px;
margin: 0px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
.bigger{
width: 110px;
padding: 12px 10px;
margin: 0px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
.button_is{
width: 110px;
background-color: #4CAF50;
color: white;
padding: 14px 20px;
margin: 0px 0;
border: none;
border-radius: 4px;
cursor: pointer;
}
.button_is:hover {
background-color: #45a049;
}
div {
border-radius: 5px;
background-color: #badf6f;
padding:20px;
}
<div>
<!-- <label for="fname" id="fn">First Name</label> -->
<!-- <input type="text" id="fname" name="firstname"> -->
<!-- <button onclick="myFunction()">Calculate</button> -->
<table border="0">
<tr>
<td>
<center><img src="http://trial.6te.net/images/gold.gif"></img></center>
</td>
<td>
<center><img src="http://trial.6te.net/images/wood_s.gif"></img></center>
</td>
<td>
<center><img src="http://trial.6te.net/images/ore_s.gif"></img></center>
</td>
<td>
<center><img src="http://trial.6te.net/images/mercury_s.gif"></img></center>
</td>
<td>
<center><img src="http://trial.6te.net/images/sulphur_S.gif"></img></center>
</td>
<td>
<center><img src="http://trial.6te.net/images/crystal_S.gif"></img></center>
</td>
<td>
<center><img src="http://trial.6te.net/images/gems_S.gif"></img></center>
</td>
</tr>
<tr>
<td>
<input type="text" id="gold_" name="Gold" class="bigger">
</td>
<td>
<input type="text" id="wood_" name="Wood" class="smaller" value="0">
</td>
<td>
<input type="text" id="ore_" name="Ore" class="smaller" value="0">
</td>
<td>
<input type="text" id="mercury_" name="Mercury" class="smaller" value="0">
</td>
<td>
<input type="text" id="sulphur_" name="Sulphur" class="smaller" value="0">
</td>
<td>
<input type="text" id="crystals_" name="Crystals" class="smaller" value="0">
</td>
<td>
<input type="text" id="gems_" name="Gems" class="smaller" value="0">
</td>
</tr>
<tr>
<td>
Durability :<br>
<input type="text" id="currDura_" name="Current_Durability" class="smaller"> /
</td>
<td>
<input type="text" id="maxDura_" name="Maximum_Durability" class="smaller">
</td>
</tr>
<tr>
<td>
Repair Cost :<br>
<input type="text" id="repCost_" name="Repair_Cost" class="bigger">
</td>
</tr>
<tr>
<td>
Smith Efficiency :<br>
<input type="text" id="smithEffi_" name="Smith_Efficiency" class="smaller">
</td>
<td>
Smith Charges :<br>
<input type="text" id="smithCharge_" name="Smith_Charge" class="smaller">
</td>
</tr>
<tr>
<td colspan="7">
<center><input type="button" value="Calculate" name="Calc_Button" onclick="cpbCalc()" class="button_is"></center>
</td>
</tr>
<tr>
<td colspan="7">
<label id="result_"></label>
</td>
</tr>
</table>
</div>