首先贴上代码:
<a href="Delete_Servlet?de_name=<%=book.getName()%>" οnclick="confirm('确定删除么?')">
这个是修改之前的代码,看起来好像没问题,前面是超链接,后面为判断.但是在测试的时候,发现,在跳出的对话框中选[否],还是会进行跳转,并进行相应的操作.我百思不得其解.
在网上搜过好多之后,才慢慢懂得了一点.先说一下出现这个问题的原因:
两者的执行顺序是先判断onClick,再执行href的跳转,但是在两者都定义了的时候,在href中定义的函数如果有返回值的话,当前页面的内容将被返回值代替.所以就会出现上述的问题.
解决方法:
在此处,我的代码中href的功能除了要实现跳转到新的servlet中,还要把jsp中的数据传到响应的servlet中,通过网上的方法,我自己变通了一下:
具体说来就是将点击之后是否跳转的判断,放到onclick的方法中,将要带走的值定义为<a>标签的name属性,就可以通过参数的形式拿走了.
首先先引入存放数据的Book实体类
Book book = new Book();
这是修改之后的<a>标签
<a name = "<%=book.getName()%>" οnclick="fun_cofm(this)">删除</a>
我加了一个name属性,用来存放从Book中拿到的数据
下面是方法:
<script>
/* 声明onclick所执行的方法, */
function fun_cofm(obj){
var a = confirm("确定要删除吗?");
if(a == false){
return;
}else{
/* 当[确定]时,才调用href,就杜绝了之前的问题. */
/* 调用<a>标签中的name属性,就可以拿到Book实体类中的值,从而传递到servlet业务层 */
obj.href="Delete_Servlet?de_name="+obj.name;
}
}
</script>
最后测试通过!
有一个小问题就是:
当点击[删除]的时候,鼠标不会再变成[手],所以需要再简单设置一下:
<style type="text/css">
#aa{
cursor:pointer;
}
</style>
<a id = "aa" name = "<%=book.getName() %>" οnclick="fun_cofm(this)" >删除</a>
以上!