我的javascript的一部分工作,另一部分没有

时间:2013-08-24 22:41:38

标签: javascript html5 canvas

我有一个计算函数和一个画布元素我不知道为什么但画布部分工作而计算功能没有。如果我从我的文本编辑器启动它,计算功能工作,而画布部分不工作。

它确实让我感到困惑,我认为它可能与订购有关,也许我真的不确定是否有人可以解释这些结果?

http://jsfiddle.net/IamSleepy32/tELZd/

这是计算函数

function calculate(){
var amount=document.getElementById("amount");
var apr=document.getElementById("apr");
var years=document.getElementById("years");
var payment=document.getElementById("payment");
var total=document.getElementById("total");
var totalintrest=document.getElementById("totalintrest");

var principal= parseFloat(amount.value);
var intrest= parseFloat(apr.value)/100/12;
var payments= parseFloat(years.value)*12;

var x= Math.pow(1+intrest,payments);
var monthly= (principal*x*intrest)/(x-1);

if(isFinite){
    payment.innerHTML=monthly.toFixed(2);
    total.innerHTML=(monthly*payments).toFixed(2);
    totalintrest.innerHTML=((monthly*payments)-principal).toFixed(2);

}
else{
    payment.innerHTML="";
    total.innerHTML="";
    totalintrest.innerHTML="";
    }
}

这是画布部分的开始,其余部分在小提琴中

var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');

2 个答案:

答案 0 :(得分:0)

我在您的函数中看到的唯一问题是您使用的是未定义的变量isFinite。如果您引用JavaScript函数isFinite,则忘记指定数字参数。

也许你的意思,

if (isFinite(monthly)) { } else { }

答案 1 :(得分:0)

问题是函数calculate是未定义的。我稍微调整了你的jsfiddle,实际上将js代码分为两部分:

function calculate() {}

可以放在html的head部分,画布的绘图可以在onLoad事件中发生。还可以将@campari的建议考虑在内,因为这可能是未定义的。我用

替换了它
if(true)