Javascript 简单的JS数学包含一个错误,我不知道如何修复它

Javascript 简单的JS数学包含一个错误,我不知道如何修复它,javascript,math,Javascript,Math,我的数学函数(doMath())有问题。我已经用尽了我所知道的一切关于如何让这个工作。我已经把我的代码贴在这里了,但我不知道怎么回事。当表单更简单时,它可以工作,但我向它添加了一些新特性。如果你不介意在这个问题上帮助我,我将不胜感激 function doMath() { var one = document.getElementById('price').value; var two = document.getElementById('recon').value; var outp = "

我的数学
函数(doMath())
有问题。我已经用尽了我所知道的一切关于如何让这个工作。我已经把我的代码贴在这里了,但我不知道怎么回事。当表单更简单时,它可以工作,但我向它添加了一些新特性。如果你不介意在这个问题上帮助我,我将不胜感激

function  doMath() {
var one = document.getElementById('price').value;
var two = document.getElementById('recon').value;
var outp = "";
var outps = "";
    {
    ans = (one*two);
    ansq = (one*two)*12;
    outp =" " + "$" + ans.toFixed(2) + "/Month";
    outps =" " + "$" + ansq.toFixed(2) + "/Year";

}
  document.getElementById('outtab').innerHTML = outp;
document.getElementById('outtab1').innerHTML = outps;
} 
嗨:)我决定尝试修复你的代码。我会告诉你我做了什么来找出问题所在

首先,我将您的所有代码复制到我的计算机上,并按原样进行测试

当点击“计算总数”按钮时,似乎。。。什么也没发生。我还注意到“年度总额”/“月度总额”为空。。。因此,我假设您的问题是这些显示器从未发生过任何事情

我的第一个想法是,可能按钮坏了——换句话说,它没有调用doMath()!为了检查这一点,我添加了警报(“domath called”);在domath()方法内部。正如我所怀疑的,没有出现弹出窗口。这意味着按钮制作不正确,并且没有调用doMath

弄明白这一点后,我立即检查了你的按钮HTML。事实证明,它看起来是有效的!困惑的是,我又看了一眼你的函数,发现了一些奇怪的语法。我试着移除它,但失败了。我决定完全删除你的JS,并用我自己的JS替换它,看看我的代码副本是否有效。如果是这样,那么这将指向语法问题。就在我准备这么做的时候,我注意到了一些非常奇怪的事情

<script language="text/javascript">

语言应该是类型化的

我用类型替换了语言,并且。。。成功了

我重新添加了你奇怪的语法,看看它是否也有效果。事实并非如此。因此,我可以得出结论,你的消息来源确实存在一个问题。解决方案很简单:

改变

<script language="text/javascript">


应用一项更改后的完整代码为:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Package Plans</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript">
function  doMath() {
var one = eval(document.theForm.elements[0].value);
var two = eval(document.theForm.elements[1].value);
var outp = "";
var outps = "";
    {
    ans = (one*two);
    ansq = (one*two)*12;
    outp =" " + "$" + ans.toFixed(2) + "/Month";
    outps =" " + "$" + ansq.toFixed(2) + "/Year";
}
  document.getElementById('outtab').innerHTML = outp;
document.getElementById('outtab1').innerHTML = outps;
} 
</script>

<script type="text/javascript">
function reconPackage(){
var text = document.getElementById('recom');
var rad=document.theForm.gb;
for(var i=0;i<rad.length;i++){
    if(rad[i].checked){
        switch(rad[i].value){
        case '5':text = '5';break;
        case '10':text = '10';break;
        case '15':text = '15';break;
        case '20':text = '20';break;
        case '30':text = '30';break;
        case '50':text = '50';break;
        case '100':text = '100';break;
        default: text='';break;
        }
        }
}
document.getElementById('recom').innerHTML = text;
}
</script>
<script type="text/javascript">
function calcPackage(){
var text = document.getElementById('price');
var rad=document.theForm.gb;
for(var i=0;i<rad.length;i++){
    if(rad[i].checked){
        switch(rad[i].value){
        case '5':text.value = '2.50';break;
        case '10':text.value = '2.00';break;
        case '15':text.value = '2.00';break;
        case '20':text.value = '1.75';break;
        case '30':text.value = '1.25';break;
        case '50':text.value = '0.80';break;
        case '100':text.value = '0.50';break;
        default: text='';break;
        }
    }
}
document.getElementById('price').innerHTML = text;
}
</script>
<script type="text/javascript">
function DoAllThese() {
calcPackage();
reconPackage();
}
</script>

</head>
<body>
<form id="one" name="theForm" onClick="DoAllThese()">
            <p><strong>Choose package that fits you best, then click the button below to get a price:</strong><br/>              
            <input   type="radio" name="gb" value="5">I just use my computer for email and surfing the web.  I have a few documents and other files I need to back up.<br/>
            <input   type="radio" name="gb" value="10">
            I have some music and a few files, I am in school/college and need to backup my work.<br/>
            <input   type="radio" name="gb" value="15">
            I have 50 songs, pictures, and documents, I do not want to lose.
            <br/>
            <input   type="radio" name="gb" value="20">
            I have a lot of documents that need to be backed up regulary, plus some music.<br/>
            <input   type="radio" name="gb" value="30">
            I own small business and need to backup a few computers.<br/>
            <input   type="radio" name="gb" value="50">
            I have a few 100 songs, and need to protect them!<br/>
            <input   type="radio" name="gb" value="100">I'm a music and picture hound.  My life's collection of MP3s and every picture I've ever taken is on my computer.<br/>
            <p>Recommend Package: <span id="recom"></span> GB Plan</p>
            </p>


  <p>
  </p>
  <div>$<input name="two" type="text" DISABLED id="price" size="8"></div>
<input type="button" onClick="doMath();" value="Calculate Total"><input type="reset" value="Reset Form" />
<BR><BR>Monthly Total:<SPAN ID="outtab"></SPAN>
<br>Yearly Total:<SPAN ID="outtab1"></SPAN>
</form>
<br><BR>
</body>
</html>

一揽子计划
函数doMath(){
var one=eval(document.theForm.elements[0].value);
var two=eval(document.theForm.elements[1].value);
var outp=“”;
var outps=“”;
{
ans=(一乘二);
ansq=(一乘二)*12;
outp=“”+“$”+ans.toFixed(2)+“/月”;
输出=”+“$”+ansq.toFixed(2)+“/年”;
}
document.getElementById('outtab')。innerHTML=outp;
document.getElementById('outtab1')。innerHTML=outps;
} 
函数包(){
var text=document.getElementById('recom');
var rad=document.theForm.gb;

对于(var i=0;我在发布问题时,应该假设读者不想做任何工作来试图弄清楚它在问什么……回到它工作的地方,一次添加一个新功能。当您希望我们帮助您修复某个问题时,您应该首先告诉我们什么不工作,而不是让人们猜测问题可能是什么be.“我有个问题”没有意义。我觉得被骗了。标题说
simple
不要使用EVAL!糟糕!使用parseInt,parseFloat!我接受了这个建议并应用了它。谢谢它。我还修改了我的代码,现在一切都很好。很高兴听到:D如果你能单击我答案旁边的复选标记,我会得到一分ts,非常感谢!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Package Plans</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript">
function  doMath() {
var one = eval(document.theForm.elements[0].value);
var two = eval(document.theForm.elements[1].value);
var outp = "";
var outps = "";
    {
    ans = (one*two);
    ansq = (one*two)*12;
    outp =" " + "$" + ans.toFixed(2) + "/Month";
    outps =" " + "$" + ansq.toFixed(2) + "/Year";
}
  document.getElementById('outtab').innerHTML = outp;
document.getElementById('outtab1').innerHTML = outps;
} 
</script>

<script type="text/javascript">
function reconPackage(){
var text = document.getElementById('recom');
var rad=document.theForm.gb;
for(var i=0;i<rad.length;i++){
    if(rad[i].checked){
        switch(rad[i].value){
        case '5':text = '5';break;
        case '10':text = '10';break;
        case '15':text = '15';break;
        case '20':text = '20';break;
        case '30':text = '30';break;
        case '50':text = '50';break;
        case '100':text = '100';break;
        default: text='';break;
        }
        }
}
document.getElementById('recom').innerHTML = text;
}
</script>
<script type="text/javascript">
function calcPackage(){
var text = document.getElementById('price');
var rad=document.theForm.gb;
for(var i=0;i<rad.length;i++){
    if(rad[i].checked){
        switch(rad[i].value){
        case '5':text.value = '2.50';break;
        case '10':text.value = '2.00';break;
        case '15':text.value = '2.00';break;
        case '20':text.value = '1.75';break;
        case '30':text.value = '1.25';break;
        case '50':text.value = '0.80';break;
        case '100':text.value = '0.50';break;
        default: text='';break;
        }
    }
}
document.getElementById('price').innerHTML = text;
}
</script>
<script type="text/javascript">
function DoAllThese() {
calcPackage();
reconPackage();
}
</script>

</head>
<body>
<form id="one" name="theForm" onClick="DoAllThese()">
            <p><strong>Choose package that fits you best, then click the button below to get a price:</strong><br/>              
            <input   type="radio" name="gb" value="5">I just use my computer for email and surfing the web.  I have a few documents and other files I need to back up.<br/>
            <input   type="radio" name="gb" value="10">
            I have some music and a few files, I am in school/college and need to backup my work.<br/>
            <input   type="radio" name="gb" value="15">
            I have 50 songs, pictures, and documents, I do not want to lose.
            <br/>
            <input   type="radio" name="gb" value="20">
            I have a lot of documents that need to be backed up regulary, plus some music.<br/>
            <input   type="radio" name="gb" value="30">
            I own small business and need to backup a few computers.<br/>
            <input   type="radio" name="gb" value="50">
            I have a few 100 songs, and need to protect them!<br/>
            <input   type="radio" name="gb" value="100">I'm a music and picture hound.  My life's collection of MP3s and every picture I've ever taken is on my computer.<br/>
            <p>Recommend Package: <span id="recom"></span> GB Plan</p>
            </p>


  <p>
  </p>
  <div>$<input name="two" type="text" DISABLED id="price" size="8"></div>
<input type="button" onClick="doMath();" value="Calculate Total"><input type="reset" value="Reset Form" />
<BR><BR>Monthly Total:<SPAN ID="outtab"></SPAN>
<br>Yearly Total:<SPAN ID="outtab1"></SPAN>
</form>
<br><BR>
</body>
</html>