简单的JS Math包含一个错误,我不知道如何解决它

时间:2012-01-23 02:02:43

标签: javascript math

我的数学问题function(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;
} 

1 个答案:

答案 0 :(得分:1)

嗨:)我决定尝试修复你的代码。我将引导您完成我所做的工作以找出问题所在。

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

当点击“计算总计”按钮时,似乎......没有任何反应。我还注意到“每年”/“每月总计”是空白的......因此,我认为你的问题是这些显示器什么都没发生。

我的第一个念头是按钮可能坏了 - 换句话说,它不是在调用doMath()!为了检查这个,我添加了警报(“domath called”);在domath()方法中。我怀疑没有弹出窗口。这意味着按钮没有正确生成,并且没有调用doMath!

在搞清楚之后,我立即检查了你的按钮HTML。事实证明,它看起来有效! COnfused,我再看一下你的函数,并注意到一些奇怪的语法。我尝试删除它,但失败了。我决定完全删除你的JS并用我自己的JS替换它,看看我的代码副本是否有效。如果它这样做,那么这将指向语法问题。正如我要做的那样,我注意到一些非常奇怪的东西。

<script language="text/javascript">

语言应该是类型。

我用类型替换了语言,并且......它工作了!

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

更改

<script language="text/javascript">

<script type="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>

如果您将其用于商业目的,我真的恳请您完全重做您的代码。它似乎非常复杂,例如使用eval,并且当只设置一个时,从两个表单元素中读取。这就像您将数据存储在可以存储在一个var。

中的形式