0

我目前正在为我的公司制作一个巨大的在线时间表,使用 JavaScript 来计算总字段中的每一行。

一切都在使用数字输入,但如果用户在其中一个文本框中插入非数字值,则总值将为:NaN 错误。

如何更改我的 JavaScript 代码,以便如果用户在文本框中输入例如 SYG,那么它将计为 0?

这是整个脚本:

<script language="javascript">  
function addsum()

{
var man_1, man_2, man_3, man_4, man_5, man_6, man_7, man_8, man_9, man_10, man_11,  total_1;
var tir_1, tir_2, tir_3, tir_4, tir_5, tir_6, tir_7, tir_8, tir_9, tir_10, tir_11, tota l_2;
var ons_1, ons_2, ons_3, ons_4, ons_5, ons_6, ons_7, ons_8, ons_9, ons_10, ons_11, total_3;
var tor_1, tor_2, tor_3, tor_4, tor_5, tor_6, tor_7, tor_8, tor_9, tor_10, tor_11,  total_4;
var fre_1, fre_2, fre_3, fre_4, fre_5, fre_6, fre_7, fre_8, fre_9, fre_10, fre_11,   total_5;
var lør_1, lør_2, lør_3, lør_4, lør_5, lør_6, lør_7, lør_8, lør_9, lør_10, lør_11, total_6;
var søn_1, søn_2, søn_3, søn_4, søn_5, søn_6, søn_7, søn_8, søn_9, søn_10, søn_11, total_7;
var oa_1, oa_2, oa_3, oa_4, oa_5, oa_6, oa_7;

man_1 = Number(document.form1.man_1.value);
man_2 = Number(document.form1.man_2.value);
man_3 = Number(document.form1.man_3.value);
man_4 = Number(document.form1.man_4.value);
man_5 = Number(document.form1.man_5.value);
man_6 = Number(document.form1.man_6.value);
man_7 = Number(document.form1.man_7.value);
man_8 = Number(document.form1.man_8.value);
man_9 = Number(document.form1.man_9.value);
man_10 = Number(document.form1.man_10.value);
man_11 = Number(document.form1.man_11.value);
tir_1 = Number(document.form1.tir_1.value);
tir_2 = Number(document.form1.tir_2.value);
tir_3 = Number(document.form1.tir_3.value);
tir_4 = Number(document.form1.tir_4.value);
tir_5 = Number(document.form1.tir_5.value);
tir_6 = Number(document.form1.tir_6.value);
tir_7 = Number(document.form1.tir_7.value);
tir_8 = Number(document.form1.tir_8.value);
tir_9 = Number(document.form1.tir_9.value);
tir_10 = Number(document.form1.tir_10.value);
tir_11 = Number(document.form1.tir_11.value);
ons_1 = Number(document.form1.ons_1.value);
ons_2 = Number(document.form1.ons_2.value);
ons_3 = Number(document.form1.ons_3.value);
ons_4 = Number(document.form1.ons_4.value);
ons_5 = Number(document.form1.ons_5.value);
ons_6 = Number(document.form1.ons_6.value);
ons_7 = Number(document.form1.ons_7.value);
ons_8 = Number(document.form1.ons_8.value);
ons_9 = Number(document.form1.ons_9.value);
ons_10 = Number(document.form1.ons_10.value);
ons_11 = Number(document.form1.ons_11.value);
tor_1 = Number(document.form1.tor_1.value);
tor_2 = Number(document.form1.tor_2.value);
tor_3 = Number(document.form1.tor_3.value);
tor_4 = Number(document.form1.tor_4.value);
tor_5 = Number(document.form1.tor_5.value);
tor_6 = Number(document.form1.tor_6.value);
tor_7 = Number(document.form1.tor_7.value);
tor_8 = Number(document.form1.tor_8.value);
tor_9 = Number(document.form1.tor_9.value);
tor_10 = Number(document.form1.tor_10.value);
tor_11 = Number(document.form1.tor_11.value);
fre_1 = Number(document.form1.fre_1.value);
fre_2 = Number(document.form1.fre_2.value);
fre_3 = Number(document.form1.fre_3.value);
fre_4 = Number(document.form1.fre_4.value);
fre_5 = Number(document.form1.fre_5.value);
fre_6 = Number(document.form1.fre_6.value);
fre_7 = Number(document.form1.fre_7.value);
fre_8 = Number(document.form1.fre_8.value);
fre_9 = Number(document.form1.fre_9.value);
fre_10 = Number(document.form1.fre_10.value);
fre_11 = Number(document.form1.fre_11.value);
lør_1 = Number(document.form1.lør_1.value);
lør_2 = Number(document.form1.lør_2.value);
lør_3 = Number(document.form1.lør_3.value);
lør_4 = Number(document.form1.lør_4.value);
lør_5 = Number(document.form1.lør_5.value);
lør_6 = Number(document.form1.lør_6.value);
lør_7 = Number(document.form1.lør_7.value);
lør_8 = Number(document.form1.lør_8.value);
lør_9 = Number(document.form1.lør_9.value);
lør_10 = Number(document.form1.lør_10.value);
lør_11 = Number(document.form1.lør_11.value);
søn_1 = Number(document.form1.søn_1.value);
søn_2 = Number(document.form1.søn_2.value);
søn_3 = Number(document.form1.søn_3.value);
søn_4 = Number(document.form1.søn_4.value);
søn_5 = Number(document.form1.søn_5.value);
søn_6 = Number(document.form1.søn_6.value);
søn_7 = Number(document.form1.søn_7.value);
søn_8 = Number(document.form1.søn_8.value);
søn_9 = Number(document.form1.søn_9.value);
søn_10 = Number(document.form1.søn_10.value);
søn_11 = Number(document.form1.søn_11.value);

oa_1 = Number(document.form1.oa_1.value);
oa_2 = Number(document.form1.oa_2.value);
oa_3 = Number(document.form1.oa_3.value);
oa_4 = Number(document.form1.oa_4.value);
oa_5 = Number(document.form1.oa_5.value);
oa_6 = Number(document.form1.oa_6.value);
oa_7 = Number(document.form1.oa_7.value);



total_1 = man_1 + man_2 + man_3 + man_4 + man_5 + man_6 + man_7 + man_8 + man_9 + man_10 + man_11;
total_2 = tir_1 + tir_2 + tir_3 + tir_4 + tir_5 + tir_6 + tir_7 + tir_8 + tir_9 + tir_10 + tir_11;
total_3 = ons_1 + ons_2 + ons_3 + ons_4 + ons_5 + ons_6 + ons_7 + ons_8 + ons_9 + ons_10 + ons_11;
total_4 = tor_1 + tor_2 + tor_3 + tor_4 + tor_5 + tor_6 + tor_7 + tor_8 + tor_9 + tor_10 + tor_11;
total_5 = fre_1 + fre_2 + fre_3 + fre_4 + fre_5 + fre_6 + fre_7 + fre_8 + fre_9 + fre_10 + fre_11;
total_6 = lør_1 + lør_2 + lør_3 + lør_4 + lør_5 + lør_6 + lør_7 + lør_8 + lør_9 + lør_10 +  lør_11;
total_7 = søn_1 + søn_2 + søn_3 + søn_4 + søn_5 + søn_6 + søn_7 + søn_8 + søn_9 + søn_10 +           søn_11;
samlet_1 = man_1 + tir_1 + ons_1 + tor_1 + fre_1 + lør_1 + søn_1;
samlet_2 = man_2 + tir_2 + ons_2 + tor_2 + fre_2 + lør_2 + søn_2;
samlet_3 = man_3 + tir_3 + ons_3 + tor_3 + fre_3 + lør_3 + søn_3;
samlet_4 = man_4 + tir_4 + ons_4 + tor_4 + fre_4 + lør_4 + søn_4;
samlet_5 = man_5 + tir_5 + ons_5 + tor_5 + fre_5 + lør_5 + søn_5;
samlet_6 = man_6 + tir_6 + ons_6 + tor_6 + fre_6 + lør_6 + søn_6;
samlet_7 = man_7 + tir_7 + ons_7 + tor_7 + fre_7 + lør_7 + søn_7;
samlet_8 = man_8 + tir_8 + ons_8 + tor_8 + fre_8 + lør_8 + søn_8;
samlet_9 = man_9 + tir_9 + ons_9 + tor_9 + fre_9 + lør_9 + søn_9;
samlet_10 = man_10 + tir_10 + ons_10 + tor_10 + fre_10 + lør_10 + søn_10;
samlet_11 = man_11 + tir_11 + ons_11 + tor_11 + fre_11 + lør_11 + søn_11;
samlet_12 = total_1 + total_2 + total_3 + total_4 + total_5 + total_6 + total_7;
samlet_13 = oa_1 + oa_2 + oa_3 + oa_4 + oa_5 + oa_6 + oa_7;


document.form1.total_1.value = total_1;
document.form1.total_2.value = total_2;
document.form1.total_3.value = total_3;
document.form1.total_4.value = total_4;
document.form1.total_5.value = total_5;
document.form1.total_6.value = total_6;
document.form1.total_7.value = total_7;
document.form1.samlet_1.value = samlet_1;
document.form1.samlet_2.value = samlet_2;
document.form1.samlet_3.value = samlet_3;
document.form1.samlet_4.value = samlet_4;
document.form1.samlet_5.value = samlet_5;
document.form1.samlet_6.value = samlet_6;
document.form1.samlet_7.value = samlet_7;
document.form1.samlet_8.value = samlet_8;
document.form1.samlet_9.value = samlet_9;
document.form1.samlet_10.value = samlet_10;
document.form1.samlet_11.value = samlet_11;
document.form1.samlet_12.value = samlet_12;
document.form1.samlet_13.value = samlet_13;



}
4

1 回答 1

1

要回答您的问题而不是尝试修复这个效率极低的脚本,请更改

man_1 = Number(document.form1.man_1.value)

man_1 = getNumber(document.form1.man_1.value);

并添加

function getNumber(str) {
  return isNaN(str)|| str==null?0:Number(str);
}

并在所有其他日子重复

但请查看数组

我创建了一个包含以下代码的小提琴,我无法调试,因为我目前只有一个 iPad

var days = "man,tir,ons,tor,fre,lør,søn".split(",");
window.onload=function() {
  var content=document.getElementById("content");
  for (var i=0;i<days.length;i++) {
    content.innerHTML += '<br/>'+days[i]+'<br/>';
    for (var j=1;j<=11;j++) {
      content.innerHTML+='<input type="text" name="'+days[i]+"_"+j+'" onkeyup="total(this)"/>';
    }
    content.innerHTML+='<input type="text" readonly="readonly" name="total_'+(i+1)+'"/>';
  }
  content.innerHTML += '<br/>oa<br/>';
  for (var i=0;i<days.length;i++) {
    content.innerHTML+='<input type="text" name="oa_'+(i+1)+'"/>';
  }
  content.innerHTML += '<br/>samlet<br/>';
  for (var i=1;i<=13;i++) {
    content.innerHTML+='<input type="text" name="samlet_'+i+'"/>';
  }
}
function total(fld) {
  var form=fld.form,tot=0,sam=0,oa=0;
  for (var tot=0,i=0;i<days.length;i++) {
    for (var day=0,j=1;j<=11;j++) {
      day=getNum(form.elements[days[i]+'_'+j].value);
      tot+=day;
      form.elements["samlet_"+j].value=getNum(form.elements["samlet_"+j].value)+day;
    }
    form.elements["total_"+(i+1)].value=tot;
    var oaTot=tot>8?tot-8:0;
    var thisOa = getNum(form.elements["oa_"+i].value)+oaTot;
    sam+=tot;
    oa+=thisOa;;
  }
  form.elements["samlet_12"].value=sam;
  form.elements["samlet_13"].value=oa;
}
function getNum(str) {
  return str==null || str=="" || isNaN(str)?0:Number(str);
}
于 2013-04-04T13:01:40.203 回答