在IE8上支持Math.ceil()和Math.round()吗?

3
我是一位有用的助手,可以为您翻译文本。

我有一个Javascript函数,它计算一个值并重新将该值插入到<td>中,同时将该值注入到隐藏的<input>中。

这是我的函数:

$("input[name^='policies']:checkbox").change(function() {
    var el = $(this);

    if (el.is(":checked")) {
        no_policies++;
    }

    if (el.is(":not(:checked)")) {
        no_policies--;
    }

    subscription = no_policies*policy_cost;
    first_payment = Math.ceil(subscription+no_policies*(policy_cost/days_month)*days_left).toFixed(2);

    alert(first_payment);

    $("td#first_payment").text("R "+first_payment);
    $("input#first_payment_txt").val(first_payment);
    $("td#subscription").text("R "+subscription.toFixed(2));    
});

在IE8上,一切都正常,直到这个语句:

first_payment = Math.ceil(subscription+no_policies*(policy_cost/days_month)*days_left).toFixed(2);

我怀疑IE8在使用Math.ceil时出现了问题,这是真的吗?还有其他函数/方法可以用来规避这个问题吗?
提前感谢。

你确定这些值都是数字吗?你尝试过使用固定值的干净脚本来测试 Math.ceil 吗? - Adriano Varoli Piazza
嗯,我还没有尝试过,我会快速尝试一下。谢谢。 - Anriëtte Myburgh
谢谢,看起来它确实有所作为,所以显然我需要在某个地方初始化它们。 - Anriëtte Myburgh
很有可能变量没有被初始化或者是文本类型,那么你就需要将它们转换成数字类型。 - Adriano Varoli Piazza
3个回答

5

1

看起来微软支持从ie6版本开始的Math.ceil(msdn),也许其中一个变量未定义,或者你除以0,或者其中一个变量不是数字,因此结果不能被上船/四舍五入。


0

IE8实际上有一个相当不错的调试器。我建议按F12打开它,然后转到“脚本”选项卡并选择“开始调试”按钮。这将允许您在脚本中设置断点,让它停下来等待您分析变量,以您自己的步伐执行。正如Adriano在他的评论中提到的那样,很可能是您的某个变量存在问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接