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不正常)
可以用 分支结构将他分为两种情况 正常 和不正常(或三种a不正常 b不正常)
#2
我已经试过了,当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,现在又遇到问题了,当我的页面上的记录只有一条的时候,它就计算不出结果来,不知道是什么原因啊!
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;也可以 看哈 是不是哪有问题
这个 得慢慢调 用alert 也行 用 debugger;也可以 看哈 是不是哪有问题
#6
值能取得到的,就是一回能行一会不行,不过现在我把类型转换成了number型就好了!
#1
为null可以说是一种不正常的情况 最好不要加入到相加算法中
可以用 分支结构将他分为两种情况 正常 和不正常(或三种a不正常 b不正常)
可以用 分支结构将他分为两种情况 正常 和不正常(或三种a不正常 b不正常)
#2
我已经试过了,当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,现在又遇到问题了,当我的页面上的记录只有一条的时候,它就计算不出结果来,不知道是什么原因啊!
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;也可以 看哈 是不是哪有问题
这个 得慢慢调 用alert 也行 用 debugger;也可以 看哈 是不是哪有问题
#6
值能取得到的,就是一回能行一会不行,不过现在我把类型转换成了number型就好了!