说起程序中的bug,真是一个令所有程序员深恶痛绝的东西,然而大部分都是源于接触少,缺乏经验。
在上学期javaWeb大作业中,在写一个jsp的时候,由于一个button的功能是提交,于是把这个button的name赋值为submit,然而这个值和jsp中form(表单)的提交函数重名了。
部分代码如下
1 <p align="center"> 2 <input type="button" class="btn btn-success " value="submit" name="B1" onclick="LoginSubmit()"> 3 <input type="reset" class="btn btn-info" value="重置" name="B2"> 4 <input type="button" class="btn btn-primary" value="注册" name="B3" onclick="location.href='register.jsp'"> 5 </p>
这就导致了在javascript部分写LoginSubmit()函数的时候出现了严重的bug。部分代码如下。
1 function LoginSubmit(){ 2 var user=document.Login.loginName.value; 3 var pass=document.Login.password.value; 4 var authcode=document.Login.authcode.value; 5 //var regu= /^[a-zA-Z][a-zA-Z0-9]{0,24}$/; 6 var id=document.Login.id.value; 7 if(user==null||user==""){ 8 alert("请填写用户名"); 9 10 } 11 else if(pass==null||pass==""){ 12 alert("请填写密码"); 13 14 } 15 else if(authcode==null||authcode==""){ 16 alert("请输入验证码"); 17 18 } 19 else if(id==null||id==""){ 20 alert("请选择身份"); 21 } 22 else 23 document.Login.submit(); 24 }
这时表单提交的时候调用的并不是提交函数submit(),而是叫submit()的这个button,最后的结果就是,在网页中不管怎么按那个提交按钮都是无效的。
这个bug困扰了我一晚上,在第二天才突然想到是因为命名不规范才导致这样的结果,如果是有经验的开发人员应该不会犯这种低级的错误。