2013-04-04 161 views
0

我目前正在为我的公司制作一个巨大的在线时间表,使用JavaScript对整个字段中的每一行进行计算。JavaScript:将NaN转换为0

一切正在使用数字输入,但如果用户在其中一个文本框中插入非数字值,总值将为: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

有点美丽以它自己的方式 – NimChimpsky 2013-04-04 12:41:59

+0

请同时显示您的html代码 – 2013-04-04 12:43:10

+3

我认为您需要介绍阵列的神奇力量 – Doorknob 2013-04-04 12:44:22

回答

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

,并重复所有其他日子

但是请看阵列

我创建了一个fiddle包含下面的代码,我不能调试,因为我只是在一瞬间

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); 
} 
有iPad
+0

没有产生错误,但是您有内容+ ='
'+天[i] +'
';应该是content.innerHTML + ='
'+天[i] +'
'; - http://jsfiddle.net/VSGsL/11/ – HJ05 2013-04-04 17:34:35

+0

谢谢你的帮助,这是我的第一个HTML页面,并使用PHP所以,即时通讯有点使用什么我可以在网上阅读。 il检查它:) – user2244844 2013-04-04 18:05:21

+0

几乎完成(以及我可以没有看到HTML) – mplungjan 2013-04-04 19:26:30