A标签上使用onclick事件,js函数响应成功,单会刷新当前页面陷阱
BEGIN;
最近在做html页面时,有时候会遇到以前没遇到的各种奇葩问题。
目前要记载的,就是其中之一。
我们在写链接的时候,即A标签,最普通的写法无非是
<a href='http://www.baidu.com'>百度</a>
(都说百度主页50%是用来测网速的,现在又多了一个用来举例的。。。)。
那么,我们也有很多时候是需要做操作的,如验证文本框内容,成功后再ajax提交,
那么,这个时候我们的html代码有可能会写成这样的:
<a href='#' onclick='test()'>百度</a>
或者干脆直接不写 href,即:
<a onclick='test()'>百度</a>
当我们在测试test()方法的时候,会发现,一切正常,可以alert,可以文本框值神马的,依然可以提交到指定的后台方法,表面上看没有任何问题。
但是可能会出现如下情况:
1、如果你的网页超过了你的电脑分辨率高度,即你滚动了滚动条,然后在中间去点击,因为你的是ajax提交,
你要展示的地方,数据依然刷新,但是,你的网页会重新回到页面的最上方,这个时候,我们可以看到,
浏览器的url地址上的最后面,会多出一个#号!
2、假设JS中有个全局变量获取请求test方法的参数,并提交,样例代码如下:
var gotoPage = 1;<span style="white-space:pre"> </span>// 需要跳转的页数,默认为1
function mysubmit(gotoPageNo) {
<span style="white-space:pre"> </span>gotoPage = gotoPageNo;
<span style="white-space:pre"> </span>// 验证是否获取到了3
<span style="white-space:pre"> </span>alert(gotoPage);
<span style="white-space:pre"> </span>// 提交
<span style="white-space:pre"> </span>$('#div').load = 'xxx.do?gotoPage=' + <span style="font-family: 'Microsoft YaHei';">gotoPage;</span>
}
<a href='#' onclick='mysubmit(3)'>提交</a>
从表面上面,gotoPage获取到传递过来的值,然后进行提交,按道理是gotoPage的确是3。
按照上面代码,做了一个alert,没错,弹出来的gotoPage也的确是3。但是我们再xxx.do的方法里面,拿到的却是1!
问题就出在于,页面刷新了。但是具体是怎么个过程,当时解决问题时没有细研究,
但是的确弹出来的是3,而xxx.do拿到的是1。
解决办法:
当我们再用到A标签的时候,尽可能的不要出现<a href='#' οnclick='test()'>这样的情况,
一般,都要写成<a href='javascript:;' οnclick='test()'>或者<a href='javascript:void(0);' οnclick='test()'>。
就算!你那个A标签没有链接地址,我的建议是,还是不能写成href='#',
因为很有可能会因为不知道为什么页面老是跳到网页的最上面而浪费时间去找原因。
OK,结束。
END;
--- --- --- ---> 点击查看更多最新原创博文<--- --- --- ---
技术交流

A标签上使用onclick事件,js函数响应成功,单会刷新当前页面陷阱的更多相关文章
- 在js中拼接<a>标签,<a>标签中含有onclick事件,点击无法触发该事件
我们在<a>标签中添加事件一般是onclick="editUser()" 这样添加,在html页面上是行的通的 但是如何你是在js中拼接<a>标签并在< ...
- JQuery模拟点击页面上的所有a标签,触发onclick事件
注意: 这种方法需要给所有的a标签加上id属性 页面加载完成模拟点击所有的a标签: <script> $(function () { // 模拟点击页面上的所有a标签,触发onclick事 ...
- HTML中在a标签中添加onclick事件
1.链接的onclick 事件被先执行,其次是href属性下的动作; 2.假设链接中同时存在href 与onclick,如果想让href 属性下的动作不执行,onclick 必须得到一个false的返 ...
- a 标签中加 onclick事件,根据事件中的校验情况来决定是否执行a标签的链接
a 标签中加 onclick方法后,先执行onclick方法,在去执行a标签href下属性对应的动作,如果不想执行href属性下动作需要用false作为返回值. <a href="ht ...
- js函数、表单验证
惊天bug!!!在script里面只要有一点点错误,就都不执行了!!!所以每写一个方法,就跑一下,因为这个书写疏忽导致的bug不可估量!!! [笑哭,所以我才这么讨厌js么,后来真心的是一点都不想再看 ...
- js修改url参数,无刷新更换页面url
一.js修改地址栏URL参数 function changeURLPar(destiny, par, par_value) { var pattern = par + '=([^&]*)'; ...
- vue项目进行时,script标签中,methods事件中函数使用的async/await
用 async/await 来处理异步 await关键字只能放到async函数里面,通过await得到就是Promise返回的内容:当然也能通过then()去获取,若通过then()获取了则就无Pro ...
- 标签中的onclick调用js方法传递多个参数的解决方案
1.JS方法 <script type="text/javascript"> funcation cc(parameter1,parameter2,parameter3 ...
- 在HTML标签元素中,绑定JS函数
<a onclick="ShowMsg(this)" id="myA" href="#">按钮</a> //JS方法 ...
随机推荐
- 企业应用架构研究系列二:MSF&Scrum 项目管理
从业软件项目这么多年,在企业应用开发项目中,项目能否成功,是否能按照项目计划有效的推进,是有很强的一套项目管理理论.最早的时候,接触的项目管理的方法论就是微软的MSF(Microsoft Soluti ...
- swap分区扩展的三种方法
redhat linux swap分区扩展的三种方法 2016-12-26 11:41:08 分类: LINUX 原文地址:redhat linux swap分区扩展的三种方法 作者:quanshen ...
- 如何巧妙使用vim处理文件
一系列流程书写如何用vim巧妙处理文件 1. 创建两个待处理的文件 root@ubuntu:/home/watson/real-watson# touch left right 2. 简单增补文件内容 ...
- 有限差分法(Finite Difference Method)解方程:边界和内部结点的控制方程
FDM解常微分方程 问题描述 \[\frac{d^2\phi}{dx^2}=S_{\phi} \tag{1} \] 这是二阶常微分方程(second-order Ordinary Differenti ...
- Java如何跳出当前的多重嵌套循环?
在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环.例如, outer: for(int i=0;i<1 ...
- List 和 Map 区别?
表面来看,List是一个只是存放单个元素的集合,List集合所包含的元素可以重复,元素按放入的先后顺序来存放,程序可以通过元素的索引来读取元素,因此List相当于一个动态数组:Map则是一个存放key ...
- 什么是 Mybatis?
1.Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时 只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动.创建连接.创建 statement 等繁杂的过程. ...
- Maria DB数据库基础知识
Maria DB连接 与MariaDB建立连接的一种方法是在命令提示符下使用mysql二进制文件. Maria DB命令行登录数据库服务: mysql -u root -p -- 换行输入密码 上面给 ...
- 线程池提交任务的两种方式:execute与submit的区别
Java中的线程池在进行任务提交时,有两种方式:execute和submit方法. 一.execute和submit的区别 execute只能提交Runnable类型的任务,无返回值.submit既可 ...
- npm安装包出现UNMET DEPENDENCY报错
出现这个内容应该是包损坏,导致npm无法正常解析,通过 npm ls 命令也可以看到UNMET DEPENDENCY在依赖包上出现,在输出的信息最后有一个错误信息 npm view pkg versi ...