Javascript SyntaxError:仅限意外的EOF -webkit浏览器

时间:2012-09-24 19:56:15

标签: javascript jquery

我有一个函数(如下所示),它总计在“.total”输入字段的页面上的所有小时。这个功能在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);
}

2 个答案:

答案 0 :(得分:1)

当您从网站复制/粘贴代码时,有时无效字符可以用于代码。

不幸的是,它们通常是不可见的,只有在用键盘上的箭头键移动光标时才能注意到它们。当你到达无​​效的那个时,光标将暂停一次击键。


除此之外,请考虑在代码中使用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,是一个非常方便的模式。

答案 1 :(得分:0)

它似乎有效。在chrome上测试过。

请参阅 LIVE DEMO 作为参考。

HTML:

<input type="text" class="total" value="1" />
<input type="text" class="total" value="2" />
<input type="text" class="total" value="3" />
<input type="text" id="taskHRStotals" value="0" />

JS

totalUpHours();

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);
}​

​