一个JAVA的问题!

来源:百度知道 编辑:UC知道 时间:2024/07/05 06:02:41
<script language=javascript>
function count()
{
if(myform.total.value!=""&& myform.ymoney.value!=""){myform.total.value=myform.ymoney.value.integer+<%=sum%>;
}
}
</script>

为什么这两个数相乘,相减就可以,而相加就不行,麻烦大家帮改下!

因为在javascript中变量是弱类型,
myform.total.value=myform.ymoney.value.integer+<%=sum%>

你相乘,相减时操作符号是*和-,这个时候javascript和容易判断2个value是数字类型,所以结果容易出来

假设
var a = myform.total.value
var b = myform.ymoney.value
而当相加时,操作符号是+,而字符串的连接也是+操作符号,所以javascript不能事先确定a和b中的值是否为数字,哪怕是数字,列入a=1,b=2,a+b的结果也会是12

为了避免这样的情况
一般都先对a或者b做个++运算,告诉javascript,a和b操作是数字计算
var b = myform.ymoney.value;
b++;
myform.total.value=(--b)+<%=sum%>;
(--b)将值又运算回来,不影响后面的计算

myform.total.value=parseFloat(myform.ymoney.value)+<%=sum%>;

数字加号和字符串的加号是一样的,而myform.ymoney.value是字符串类型,所以当作字符串相加了。
字符串没有减法和乘法,所以会自动先转换成数字再运算。

javascript 是弱类型语言
所以不管声明什么样类型的变量都用var ,有时甚至不用声明 直接使用
“+”在java中不仅可以表示两个数相加,还可以表示连接两个字符串
在你的js中就是当作后者使用了
再加上在js中还有优先级之分
所以会导致以上结果的产生

建议解决方法
用var 声明一变量
然后将两者相加后在 赋值给该变量即可