2011-05-24 95 views
0

我有一个脚本,它从输入字段中调用变量值并将它们相乘, 当时我的函数没有执行,我也没有任何提醒,我认为这是因为我的if语句,任何人都可以看到最新出了什么问题?乘法变量不报警

function Calculate() { 

    var ContentMinutes = document.getElementById ("ContentMinutes").value; 
    var ContentMinutesSelect = document.getElementById('ContentMinutesDD') 
     .options[document.getElementById('ContentMinutesDD').selectedIndex].value 

    if (ContentMinutesSelect == 0.0166) 
    { 
     var RenderingHours = 10; 
     var VideoHours = 5; 
     var VideoSeconds = 1; 
     document.getElementById("RenderHours").innerHTML=RenderingHours; 
     document.getElementById("VideoHours").innerHTML=VideoHours; 
     document.getElementById("VideoSeconds").innerHTML=VideoSeconds; 
    } 
    else if (ContentMinutesSelect == 0.0003) 
    { 
     var RenderingHours = 1540; 
     var VideoHours = 54; 
     var VideoSeconds = 1; 
     document.getElementById("RenderHours").innerHTML=RenderingHours; 
     document.getElementById("VideoHours").innerHTML=VideoHours; 
     document.getElementById("VideoSeconds").innerHTML=VideoSeconds; 
    } 
    else 
    { 
     var RenderingHours = 6410; 
     var VideoHours = 345; 
     var VideoSeconds = 124; 
     document.getElementById("RenderHours").innerHTML=RenderingHours; 
     document.getElementById("VideoHours").innerHTML=VideoHours; 
     document.getElementById("VideoSeconds").innerHTML=VideoSeconds; 
    } 


    var NoOfFrames = document.getElementById ("NoOfFrames").value; 
    //var EstimatedCoreHours = document.getElementById ("EstimatedCoreHours").value; 
    var ServiceLevel = document.getElementById('SerivceLevelDD') 
     .options[document.getElementById('SerivceLevelDD').selectedIndex].value; 
    var RenderHours = 1; 
    var CoresInTest = document.getElementById ("CoresInTest").value; 

    var EstimatedCoreHours = GetNumeric(NoOfFrames) 
     * GetNumeric(RenderingHours) 
     * GetNumeric(CoresInTest); 

    var EstimatedTotal = GetNumeric(ServiceLevel) 
     * GetNumeric(EstimatedCoreHours); 

    alert('Estimated Cost = ' 
     +EstimatedTotal.toFixed(2) 
     + 'Estimated Core Hours = ' 
     +EstimatedCoreHours); 

    document.getElementById("EstimatedCoreHours").innerHTML = 
     EstimatedCoreHours.toFixed(2); 
    document.getElementById("EstimatedTotal").innerHTML = 
     EstimatedTotal.toFixed(2); 

    document.getElementById("EstimatedCoreHours").style.backgroundColor="yellow"; 
    document.getElementById("EstimatedTotal").style.backgroundColor="yellow"; 
} 

function GetNumeric(val) { 

    if (isNaN(parseFloat(val))) { 
     return 0; 
    } 
    return parseFloat(val); 
} 
+0

试着去http://jslint.org,将你的代码粘贴到textarea中,然后点击'jslint'。 – karim79 2011-05-24 11:08:43

+0

如果您将代码减少到可以重现错误的最小值,它将非常有帮助。这样做,你会经常找到解决方案。如果没有,请将其发布到此处。 – RobG 2011-05-24 11:47:50

+1

如果我们不知道ContentMinutesSelect的价值是什么,我们不能检查问题是什么...你能给我们一个链接到你正在尝试这个页面的页面吗? – DoXicK 2011-05-24 12:03:54

回答

0

if (ContentMinutesSelect == 0.0166)我认为,当你.value的你会得到字符串结果。

所以,你的比较应该是

if (ContentMinutesSelect == "0.0166")

+0

似乎没有工作,不能想到脚本为什么不起作用 – Liam 2011-05-24 11:17:35

+0

无关,如果一个表达式是一个数字,等号运算符会强制另一个表达式编号。 – RobG 2011-05-24 11:43:12

0

您的代码会显示没有警告如果任何行它导致错误之前,就像如果没有与ID元素“ContentMinutes”你文件。调试的最佳方式是使用类似萤火虫的东西,或者您可以随时放入一堆警报并找出错误。