项目场景:
项目场景:在编写黑马用户管理项目中的登录功能更换验证码时遇到的点击更换问题
问题描述和分析:
用checkCodeServlet制作的验证码不能被点击更新,原因是js中编写的refreshCode()函数不能被调用。
//js中refreshCode()代码
<script type="text/javascript">
//切换验证码
function refreshCode(){
//1.获取验证码图片对象
var vcode = document.getElementById("vcode");
//2.设置其src属性,加时间戳
vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();
}
</script>
继续寻找问题发现,下面的写法是不推荐的,refreshcode是希望点击时候被执行的js方法,就应该严格的写在onclick里面,href的只能就是执行页面迁移,否则在个别浏览器(如IE6)中,会出现ajax挂起的现象。
<!--问题原型-->
<a href="javascript:refreshCode();">点击换一张验证码</a>
<!--实际项目中遇到情况-->
<a href="javascript:refreshCode();">
<img src="${pageContext.request.contextPath}/checkCodeServlet" title="看不清点击刷新" id="vcode"/>
</a>
解决方案:
建议写成这样,通过onclick来实现点击验证码时更换:
<a href="#" onclick="refreshCode();return false;">点击换一张验证码</a>