关于表单上的数学运算?

时间:2022-03-09 00:15:48

function calculation(){

           
var itemx = MM_findObj("selectedStrIds");
if (itemx != null){
for (var i=0;i<itemx.length;i++){
if (itemx[i].checked == true){

                       document.getElementById('plan'+(i+1)).value=
                                     parseFloat(document.getElementById('trans_ru'+(i+1)).value) + 
                                     parseFloat(document.getElementById('beg_inventory'+(i+1)).value); 
                            
                                                     
                                  
                                  if(document.getElementById('plan'+(i+1)).value>document.getElementById('channeng'+(i+1)).value){
                                     document.getElementById('plan'+(i+1)).value=document.getElementById('plan'+(i+1)).value;}
                                  else
                                     document.getElementById('plan'+(i+1)).value=document.getElementById('channeng'+(i+1)).value;
                         
                      
}
}
}

}



这是我关于表单上写的一个关于两个变量相加的function,但两个字段都输入内容的时候计算能进行,但是当其中一个字段为空的时候,结果显示就为null。我改怎样解决这个问题啊?
至少当a=空的时候,c=b吧,为什么c会显示空啊?请高手指教啊!!

6 个解决方案

#1


为null可以说是一种不正常的情况 最好不要加入到相加算法中
可以用 分支结构将他分为两种情况 正常 和不正常(或三种a不正常 b不正常)

#2


引用 1 楼 kindazrael 的回复:
为null可以说是一种不正常的情况 最好不要加入到相加算法中
可以用 分支结构将他分为两种情况 正常 和不正常(或三种a不正常 b不正常)


我已经试过了,当a为空的时候,c=b;
但是貌似没什么用!

#3


学习中

#4


function calculation(){

           
var itemx = MM_findObj("selectedStrIds");
alert(itemx.length);
if (itemx != null){
for (var i=0;i<itemx.length;i++){
if (itemx[i].checked == true){
//alert("a");

                       document.getElementById('plan'+(i+1)).value=
                            parseFloat(document.getElementById('trans_ru'+(i+1)).value) + 
                            parseFloat(document.getElementById('beg_inventory'+(i+1)).value); 
                            
                           // document.getElementById('channeng'+(i+1)).value=
                          //  parseFloat(document.getElementById('days_started'+(i+1)).value) * 
                           // parseFloat(document.getElementById('months'+(i+1)).value)
                           
                                  
                                  if(document.getElementById('plan'+(i+1)).value>document.getElementById('channeng'+(i+1)).value){
                                     document.getElementById('plan'+(i+1)).value=document.getElementById('plan'+(i+1)).value;}
                                  else
                                     document.getElementById('plan'+(i+1)).value=document.getElementById('channeng'+(i+1)).value;
                         
                      
}
}
}

}

还是同样的function,现在又遇到问题了,当我的页面上的记录只有一条的时候,它就计算不出结果来,不知道是什么原因啊!

#5


 你alert(document.getElementById('plan'+(i+1)).value) 试试 看看 有没有

  这个 得慢慢调  用alert 也行 用 debugger;也可以    看哈 是不是哪有问题

#6


引用 5 楼 huangdaxiang0726 的回复:
你alert(document.getElementById('plan'+(i+1)).value) 试试 看看 有没有

  这个 得慢慢调  用alert 也行 用 debugger;也可以    看哈 是不是哪有问题


值能取得到的,就是一回能行一会不行,不过现在我把类型转换成了number型就好了!

#1


为null可以说是一种不正常的情况 最好不要加入到相加算法中
可以用 分支结构将他分为两种情况 正常 和不正常(或三种a不正常 b不正常)

#2


引用 1 楼 kindazrael 的回复:
为null可以说是一种不正常的情况 最好不要加入到相加算法中
可以用 分支结构将他分为两种情况 正常 和不正常(或三种a不正常 b不正常)


我已经试过了,当a为空的时候,c=b;
但是貌似没什么用!

#3


学习中

#4


function calculation(){

           
var itemx = MM_findObj("selectedStrIds");
alert(itemx.length);
if (itemx != null){
for (var i=0;i<itemx.length;i++){
if (itemx[i].checked == true){
//alert("a");

                       document.getElementById('plan'+(i+1)).value=
                            parseFloat(document.getElementById('trans_ru'+(i+1)).value) + 
                            parseFloat(document.getElementById('beg_inventory'+(i+1)).value); 
                            
                           // document.getElementById('channeng'+(i+1)).value=
                          //  parseFloat(document.getElementById('days_started'+(i+1)).value) * 
                           // parseFloat(document.getElementById('months'+(i+1)).value)
                           
                                  
                                  if(document.getElementById('plan'+(i+1)).value>document.getElementById('channeng'+(i+1)).value){
                                     document.getElementById('plan'+(i+1)).value=document.getElementById('plan'+(i+1)).value;}
                                  else
                                     document.getElementById('plan'+(i+1)).value=document.getElementById('channeng'+(i+1)).value;
                         
                      
}
}
}

}

还是同样的function,现在又遇到问题了,当我的页面上的记录只有一条的时候,它就计算不出结果来,不知道是什么原因啊!

#5


 你alert(document.getElementById('plan'+(i+1)).value) 试试 看看 有没有

  这个 得慢慢调  用alert 也行 用 debugger;也可以    看哈 是不是哪有问题

#6


引用 5 楼 huangdaxiang0726 的回复:
你alert(document.getElementById('plan'+(i+1)).value) 试试 看看 有没有

  这个 得慢慢调  用alert 也行 用 debugger;也可以    看哈 是不是哪有问题


值能取得到的,就是一回能行一会不行,不过现在我把类型转换成了number型就好了!