我有一个函数(如下所示),它总计在“.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);
}
答案 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 作为参考。
<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" />
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);
}