今天测试了我的程序,发现一个bug,或者说没有复合需求的一个小地方,但是问题却比较经典,这让我必须反思一下了.
先看看"工作中遇到的问题及解决办法10"中,我的这个javascript字符和ascii转码的代码,OK!没有问题!但是这样做不符合变更的需求了.
需求变更:
版本号从A-Z,就26个字母.修订号是不断自加的!说的这些都是基于修改页面操作的,当我选onclick版本号,版本号会按着A-Z的顺序不停的循环,当循环到Z时,再重新设置为A,如此反复进行下去.每次的版本号onclick时,修订号自动变成0.这个很好实现.每次的修订号onclick时,版本号要自动回到刚进修改页面时的那个修订号....这才是一个脑筋急转弯的地方,这可咋整?看看我改过来的代码吧:
(1)javascript中怎么把字符转化成ascii码及怎么把ascii码转化成字符
<script>
function updatecheck(id)
{
if(id=="1")
{
//当选定版本号时,把修订号设成0
document.forms[0].fileUpdateNumber.value = "0";
var fledtion ="";
//获得fileEditionNumber的值,并且截取第1位(第1位是英文字母A-Z)
var fileedition = document.forms[0].fileEditionNumber.value.substring(0,1);
//将字符转化为相应的ASCII码
var fileeditionCode = document.forms[0].fileEditionNumber.value.charCodeAt(0);
fileeditionCode = fileeditionCode+1;
//将上面转化的ASCII码转换成相应的字符
fledtion = String.fromCharCode(fileeditionCode);
var edir = fledtion;
//循环到Z以后,重新设定版本号为A
if(edir == "["){
//alert("无可换版本号!");
edir = "A";
document.forms[0].fileEditionNumber.value = edir;
return false;
}else{
//alert(edir);
document.forms[0].fileEditionNumber.value = edir;
}
}
if(id=="2")
{
var fileupdatenumber = document.forms[0].fileUpdateNumber.value;
fileupdatenumber++;
var m = "0"+fileupdatenumber;
// 此处将页面传递过来的版本号赋给版本号,这句话是解决问题的关键,"
//<%=tfileInfor.getFileEditionNumber()%>"是从数据库里取出来的版本号,也就是需求的那个难点
document.forms[0].fileEditionNumber.value = "<%=tfileInfor.getFileEditionNumber()%>";
document.forms[0].fileUpdateNumber.value = m ;
}
}
</script>
<html:form action="略" method="post">
<table width="100%" height="25" border="0" cellpadding="0" cellspacing="0" class="font_14">
<tr>
<td><div align="center">变更:</div></td>
<td><input type="radio" name="update" value="1" onclick="javascript:updatecheck(this.value);"/>版本号 </td>
<td><input type="radio" name="update" value="2" onclick="javascript:updatecheck(this.value);"/>修订号 </td>
</tr>
<tr>
<td><div align="center">版本号:</div></td>
<td ><input type="text" name="fileEditionNumber" value="<%=fileEditionNumber%>"/></td>
</tr>
<tr>
<td width="130"><div align="center">修订号:</div></td>
<td><input type="text" name="fileUpdateNumber" value="<%=fileUpdateNumber%>"/></td>
</tr>
</table>
</html:form>
这就是解决问题的办法了。