我有一个函数(如下所示),该函数总计“ .total”输入字段的onBlur页上的所有小时。此功能在FF中可以正常使用,但在Chrome和Safari中出现此错误:SyntaxError:意外的EOF ---我进行了一些研究,但对于可能是什么原因我迷失了。

谢谢你的帮助!

function totalUpHours() {
    //add all values to an array
    var hrsTotalsarr = new Array();
    $('.total').each(function() {
        var thisTotal = $(this).val();
        //clean the value
        if (thisTotal == "HRS") {
            thisTotal = 0;
        }
        hrsTotalsarr.push(thisTotal);
    });

    //sum up the array
    var hrsTotal = eval(hrsTotalsarr.join('+'));
    $('#taskHRStotals').val(hrsTotal);
}

最佳答案

有时,当您从网站复制/粘贴代码时,无效字符可能会进入代码。

不幸的是,它们通常是不可见的,只有在使用键盘上的箭头键将光标移到光标上时才能注意到它们。当您到达无效的位置时,光标将暂停一次按键。



除此之外,考虑在代码中使用eval()的替代方法。

function totalUpHours() {

    var hrsTotal = $('.total').map(function() {
                                     var thisTotal = $(this).val();

                                     return thisTotal == "HRS" ? 0 : thisTotal;
                                   })
                              .toArray()
                              .reduce(function(total, n) {
                                  return total + n;
                              }, 0);

    $('#taskHRStotals').val(hrsTotal);
}


这称为map/reduce,这是一个非常方便的模式。

09-06 02:38