刚好把项目的大体完善了。现在回想一下之前我所遇到的一些细节问题,特别是花费了我很多时间。(以下的例子在我的member.jsp和member.js)
一个是我对记录进行删除的时候,页面没有刷新 第二个是:我对于注销登录进行操作的时候,页面没有刷新(注明:注销登录在火狐,谷歌,ie8正常,但是在ie6失败).后来发现问题都与 javascript:void(0),#之间的区别有关。
于是我开始在网上搜索一番查看两者之间的区别:
"#"包含了一个位置信息 默认的锚点是#top 也就是网页的上端
<a href="#"> 点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP(实际测试发现 滚动条会滚到顶端)
而javascript:void(0) 仅仅表示一个死链接,例如:<a href="javascript:void(0)" > 点击链接后,页面不动。
<a href="#" onclick="javascript:return false;"> 作用同上。
点击链接后,不想使页面滚到页首(顶部),就用href="javascript:void(0)",不要用href="#"
如果是个# ,就会出现跳到顶部的情况,收藏的几种解决方法(保持页面不会到顶端的方法):
1:<a href="####"></a>
2:<a href="javascript:void(0)"></a>
3:<a href="javascript:void(null)"></a>
4:<a href="#" onclick="return false"></a>
下面是我测试的一个例子:
<a href="#" onClick="del(${member.memberId});return false;"><img src="<%=ctxPath%>/image/admin/btn_delete.gif"/>删除</a> 注意这里面加了一句,作用在于 当弹出confirm对话框的时候 我单击取消的时候 页面不动,如果不加的话,单击取消操作,滚动条会向顶端滚动。
JavaScript中void(0)的含义:
JavaScript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。
void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression
expression是一个要计算的 JavaScript 标准的表达式。表达式外侧的圆括号是可选的,但是写上去是一个好习惯。我们可以使用 void 操作符指定超级链接。表达式会被计算但是不会在当
前文档处装入任何内容。面的代码创建了一个超级链接,当用户点击以后不会发生任何事。当用户点击链接时,void(0) 计算为 0,但在 JavaScript 上没有任何效果。
<a href="javascript:void(0)">单击此处什么也不会发生</a>
也就是说,要执行某些处理,但是不整体刷新页面的情况下,可以使用void(0),但是在需要对页面进行refresh的情况下,那就要仔细了。 我们可以这样用<a href="javascript:void(document.form.submit())">,这句话会进行一次submit操作,使页面refresh。像我们一般的记录的修改,删除等等 需要页面相应的刷新!
我的例子:
<a href="javascript:void(document.mainForm.submit())" onClick="del(${member.memberId});"><img src="<%=ctxPath%>/image/admin/btn_delete.gif"/>删除</a>
这样一个document.mainForm.submit() 代替了 jsp页面中js文件的$("#mainForm").submit();使得页面刷新了。
那什么情况下用void(0)比较多呢,无刷新,当然是Ajax了,看一下Ajax的web页面的话,一般都会看到有很多的void(0),:),所以在使用void(0)之前,最好先想一想,这个页面是否需要
相应的刷新。
下面是我在网上搜索的一个与我注销登录遇到相似的问题,先看他的说法:
为什么location.href不自动跳转?慎用javascript:void(0)
<a href="javascript:void(0)" onclick="delete('123')">删除</a>
<script>
function delete(id) {
if(confirm("确实要删除[为什么location.href不自动跳转?]吗?")) {
location.href="/delete.jsp?id=" + id;
}
}
以上代码不管如何检查都没有任何问题,而location.href="/delete.jsp?id=" + id;在别的地方都好使,为什么这段代码就行呢?
原因是那个void(0),把代码改成:
<a href="javascript:delete('123')">删除</a>
<script>
function delete(id) {
if(confirm("确实要删除[为什么location.href不自动跳转?]吗?")) {
location.href="/delete.jsp?id=" + id;
}
}
我的注销登录最终的解决方法:
我的注销登录:
decorator.jsp
<li><a href="#" onClick="logout()">注销</a></li>
对应的js文件
function logout(){
if(confirm("确定要退出管理后台系统吗?"))
parent.window.location= ctxPath+"/console/logout.do";
}
可以成功注销登录。
按照上面的方法:
decorator.jsp
<li><a href="javascript:logout()">注销</a></li>
对应的js文件
function logout(){
if(confirm("确定要退出管理后台系统吗?"))
parent.window.location= ctxPath+"/console/logout.do";
}
也可以可以成功注销登录。
但是如果我的jsp页面换成<li><a href="javascript:void(0);" onClick="logout()">注销</a></li>
对应的js文件
function logout(){
if(confirm("确定要退出管理后台系统吗?"))
parent.window.location= ctxPath+"/console/logout.do";//这里我在在logoutAction中把session值清空 然后在struts中配置跳转的路径/login.jsp
}
注销失败,页面不能正常的跳转。必须再次刷新页面,才可以。
可以看出想要页面进行刷新 javascript:void(0)真的是慎用!
我的删除操作也是和上面一样 。源于javascript:void(0) 我的页面删除后 同样要对页面记录进行刷新!
改成了<a href="#" onClick="del(${member.memberId});"><img src="<%=ctxPath%>/image/admin/btn_delete.gif"/>删除</a>这样才可以。或者 <a href="javascript:void(document.mainForm.submit())" onClick="del(${member.memberId});"><img src="<%=ctxPath%>/image/admin/btn_delete.gif"/>删除</a>(这时把相应的js中的 $("#mainForm").submit();注释掉了)
效果达到额!
分享到:
相关推荐
### JS动态加载及JavaScriptvoid(0)爬虫解决方案详解 #### 一、引言 随着Web前端技术的发展,越来越多的网站开始采用JavaScript动态加载技术来提高用户体验和减轻服务器负担。然而,这种技术也给网络爬虫带来了新...
综上所述,`void(0)`作为一种JavaScript操作符,主要用于计算表达式而不返回任何结果。在网页开发中,它可以有效地创建无操作的超链接,触发JavaScript函数等。虽然它有其独特的应用场景,但在使用时也需要注意相关...
2. **`javascript:void(0)` 的优势**:与`#`相比,`javascript:void(0)`最大的优势在于它可以完全阻止默认的跳转行为,只执行JavaScript代码。这意味着你可以更加自由地控制点击事件的行为,比如执行复杂的DOM操作等...
### 空链接 `href="#"` 与 `href="javascript:void(0)"` 的区别 在Web开发中,我们经常会遇到两种类型的空链接:一种是使用 `href="#"`,另一种则是使用 `href="javascript:void(0)"`。这两种写法在实际应用中看...
综上所述,`javascript:void(0)`是一个简洁有效的方法,可以在不进行页面跳转的情况下控制链接的行为,但其应用需要考虑页面的上下文以及用户体验,同时要考虑到安全和维护的最佳实践。在现代Web开发中,尤其需要...
在使用 `javascript:void(0)` 的同时,了解它与直接使用 `href="#"` 的区别也很重要。`href="#"` 包含了一个位置信息,其默认锚点是 `#top`,也就是页面的顶部,而 `javascript:void(0)` 则仅仅表示一个死链接,没有...
### JavaScript中的`void(0)`具体含义及其应用详解 #### 一、`void`操作符简介 在JavaScript中,`void`是一个特殊的操作符,它主要用于执行某个表达式但不返回任何值。实际上,`void`操作符总是返回`undefined`。 ...
本文将深入探讨`javascript:void(0)`的使用、它的问题以及替代方案。 首先,`javascript:void(0)`是一个JavaScript伪协议,用于阻止默认的链接行为。当你在`<a>`标签的`href`属性中设置`javascript:void(0)`时,...
这样做的效果与设置"javascript:void(0)"相似,但是更为简洁,且避免了使用javascript伪协议,可能更符合一些web标准的规定。 void是JavaScript中的一个操作符,它使得任何表达式被计算,但返回值会被丢弃。因此,...
### ActionScript与JavaScript相互调用 #### 概述 随着互联网技术的发展,网页设计与开发逐渐成为一门重要的技能。在这一领域中,多种脚本语言和技术被广泛应用,以实现更加丰富的用户体验。其中,ActionScript与...
SweetAlert是一款广受欢迎的JavaScript插件,它为前端开发者提供了优雅地替代原生浏览器alert对话框的解决方案。这个名为"前端项目-sweetalert.zip"的压缩包包含了一个名为"sweetalert-master"的目录,很可能是Sweet...
综上所述,虽然有多种方式可以在`<a>`标签中调用JavaScript方法,但推荐使用`<a href="javascript:void(0);" onclick="js_method();>`或`<a href="javascript:;" onclick="js_method();>`,它们兼顾了代码简洁性、...
在网页开发中,我们经常遇到需要创建链接元素(`<a>`标签)的情况,但有时候这些链接并不需要导向实际的URL,而是用于触发JavaScript事件,如`onclick`。在这种情况下,如果简单地设置`href="#"`,用户点击链接时,...
然而,由于浏览器的安全限制,尤其是同源策略,这种通信可能会遇到权限问题。本文主要讨论如何通过伪协议来解决在特定情况下父页面与iframe页面通信的难题。 首先,我们要理解同源策略。同源策略是浏览器实施的一种...
遇到问题时在网上找的,很有用,于是传上来供大家使用, flash 弹出窗口 js 生成器 原创 来自:x-woods.com 由于新版本IE的改变,所以要在生成的代码增加一void函数,写成 getURL("javascript:void(window.open....
不过,这种方法对于IE6浏览器可能不完全有效,因为`return false`不会阻止链接的默认行为,所以推荐使用`javascript:void(0)`。 3. 明确指定`javascript:`前缀: 另一种方法是在`onclick`事件处理函数中显式使用`...
尽管实际效果与方法2相同,但在某些情况下,有些人可能认为使用`javascript:void(0)`更加明确。 ### 方法4: `href="#"` + `onclick` ```html <a href="#" onclick="js_method();">点击我 ``` 使用`#`作为`href`值,...
### 华为OD真题解析:JavaScript实现代码 #### 1. 查找众数及中位数 **问题描述:** 题目要求从一个给定的一维整型数组中找到众数,并基于这些众数计算出新的数组的中位数。 **输入格式:** 输入为一个一维整型...
在Web开发过程中,我们经常会遇到中文字符编码的问题,尤其是在前后端数据交互时,中文字符的乱码问题更是让人头疼。本文将深入探讨如何解决JavaScript(简称JS)在传递中文字符时出现的乱码问题,并提供具体的解决...