我想计算滑块和文本框中数据的节省。 我不知道哪里出错了。我想计算点击Button的节省。如果我对JS函数
错了,请纠正我<html>
<body>
<h1>Average Kilometres per day</h1>
<input type="range" id="kms" min="5" max="80" value="5" step="1" onchange="kms(this.value)"/>
<span id="kmsValue">0</span>
<br>
<h1>Number Of Years</h1>
<input type="range" id="yrs" min="1" max="5" value="1" step="0.5" onchange="yrs(this.value)"/>
<span id="yrsValue">0</span>
</h1>
<br>
<table>
<tr>
<td><h3>Cost Of Electricity</h3><input type="text" id="elec" value="4.5"/></td>
<td><h3>Cost Of Fuel</h3><input type="text" id="fuel" value="63"/></td>
<td><h3>Fuel Efficiency</h3><input type="text" id="feff" value="45"/></td>
</tr>
<tr>
<button onClick="savings(kms,yrs,coe,cof,eff)">See my savings</button>
</tr>
<tr>
<td><h1>You Save :</h1></td>
<span id="savings">Savings Amount</span>
</tr>
</table>
<script type="text/javascript">
function kms(kmsValue)
{
document.getElementById("kmsValue").innerHTML=kmsValue;
}
function yrs(yrsValue)
{
document.getElementById("yrsValue").innerHTML=yrsValue;
}
function savings(nok,noy,e,f,fe)
{
var nok=document.getElementById("kmsValue").value;
var noy=document.getElementById("yrsValue").value;
var e=(document.getElementById("elec").value)/50;
var eff=(document.getElementById("fuel").value) / (document.getElementById("feff").value);
var finalsavings;
if(nok<45)
{
finalsavings=(kms*yrs*365);
}
else
{
finalsavings=0;
}
document.getElementById("savings").innerHTML=finalsavings;
}
</script>
</body>
</html>
答案 0 :(得分:1)
您正在使用未定义的参数调用保存功能:
<button onClick="savings(kms,yrs,coe,cof,eff)">See my savings</button>
参数 kms,yrs,coe,cof,eff 未在您的代码中定义,即使它们是在您的函数体中,您正在创建覆盖它们的新变量。
所以只需将您的代码更改为:
function savings() {...}
和:<button onClick="savings();">
它应该有用。
[编辑]还有 kms 和 yrs 变量需要在某处定义。 另外,在计算 noy,e,f,fe 变量时,我真的不明白你要做什么,因为你没有使用它们,并且在你的函数执行结束时它们会超出范围...
答案 1 :(得分:1)
你的错误。
1。onClick="savings(kms,yrs,coe,cof,eff)"
。在这一行中,您必须提供Id's
个元素,但您提供了一些其他参数,例如coe,cof,eff
。
正确的代码 - &gt; onClick="savings(kms,yrs,elec,fuel,feff)"
2. <span id="savings">Savings Amount</span>
必须留在td
内。td
以外的元素将被忽略。
3.要在input
类型以外的元素中获取文本,您必须使用innerHTML
4. finalsavings=(kms*yrs*365);
在这一行中你没有定义变量kms
和yrs
,而你正在尝试访问它们。
正确的代码 - &gt; finalsavings=(nok*noy*365);
建议:每当JS不起作用时,只需打开调试器&gt;控制台并查看错误。几乎所有调试器都会提供易于理解的错误。
注意:还有一件事情是在函数内部发送参数时不需要发送参数。