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函数响应成功,单会刷新当前页面陷阱的更多相关文章

  1. 在js中拼接<a>标签,<a>标签中含有onclick事件,点击无法触发该事件

    我们在<a>标签中添加事件一般是onclick="editUser()" 这样添加,在html页面上是行的通的 但是如何你是在js中拼接<a>标签并在< ...

  2. JQuery模拟点击页面上的所有a标签,触发onclick事件

    注意: 这种方法需要给所有的a标签加上id属性 页面加载完成模拟点击所有的a标签: <script> $(function () { // 模拟点击页面上的所有a标签,触发onclick事 ...

  3. HTML中在a标签中添加onclick事件

    1.链接的onclick 事件被先执行,其次是href属性下的动作; 2.假设链接中同时存在href 与onclick,如果想让href 属性下的动作不执行,onclick 必须得到一个false的返 ...

  4. a 标签中加 onclick事件,根据事件中的校验情况来决定是否执行a标签的链接

    a 标签中加 onclick方法后,先执行onclick方法,在去执行a标签href下属性对应的动作,如果不想执行href属性下动作需要用false作为返回值. <a href="ht ...

  5. js函数、表单验证

    惊天bug!!!在script里面只要有一点点错误,就都不执行了!!!所以每写一个方法,就跑一下,因为这个书写疏忽导致的bug不可估量!!! [笑哭,所以我才这么讨厌js么,后来真心的是一点都不想再看 ...

  6. js修改url参数,无刷新更换页面url

    一.js修改地址栏URL参数 function changeURLPar(destiny, par, par_value) { var pattern = par + '=([^&]*)'; ...

  7. vue项目进行时,script标签中,methods事件中函数使用的async/await

    用 async/await 来处理异步 await关键字只能放到async函数里面,通过await得到就是Promise返回的内容:当然也能通过then()去获取,若通过then()获取了则就无Pro ...

  8. 标签中的onclick调用js方法传递多个参数的解决方案

    1.JS方法 <script type="text/javascript"> funcation cc(parameter1,parameter2,parameter3 ...

  9. 在HTML标签元素中,绑定JS函数

    <a onclick="ShowMsg(this)" id="myA" href="#">按钮</a> //JS方法 ...

随机推荐

  1. Citus 分布式 PostgreSQL 集群 - SQL Reference(查询分布式表 SQL)

    如前几节所述,Citus 是一个扩展,它扩展了最新的 PostgreSQL 以进行分布式执行.这意味着您可以在 Citus 协调器上使用标准 PostgreSQL SELECT 查询进行查询. Cit ...

  2. leedCode

    https://blog.csdn.net/code_yilia/category_9851007.html https://blog.csdn.net/qq_17550379/article/det ...

  3. 什么是openssl?

    在计算机网络上,OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份.这个包广泛被应用在互联网的网页服务器上.

  4. mysql行锁、表锁。乐观锁,悲观锁

    锁定用于确保事务完整性和数据库一致性. 锁定可以防止用户读取其他用户正在更改的数据,并防止多个用户同时更改相同的数据. 如果不使用锁定,数据库中的数据可能在逻辑上变得不正确,而针对这些数据进行查询可能 ...

  5. JVM 选项 -XX:+UseCompressedOops 有什么作用? 为什么要使用?

    当你将你的应用从 32 位的 JVM 迁移到 64 位的 JVM 时,由于对象的指针从 32 位增加到了 64 位,因此堆内存会突然增加,差不多要翻倍.这也会对 CPU 缓存(容量比内存小很多)的数据 ...

  6. ROS系统-第一讲

    ROS是什么 ROS历史起源 ROS总体设计 系统实现 初次实践

  7. Kurento安装与入门12——Show DataChannel

    Show DataChannel 本示例允许用户在文本框中输入任意文字,输入的文字将以字幕的形式显示在传回的视频中. 官网文档 [Show DataChannel[1] 首先从github上获取代码( ...

  8. 在微信小程序中绘制图表(part2)

    本期大纲 1.确定纵坐标的范围并绘制 2.根据真实数据绘制折线 相关阅读:在微信小程序中绘制图表(part1)在微信小程序中绘制图表(part3) 关注我的 github 项目 查看完整代码. 确定纵 ...

  9. 讲清楚之 javascript中的this

    讲清楚之 javascript中的this 这一节来探讨this. 在 javascript 中 this 也是一个神的存在,相对于 java 等语言在编译阶段确定,而在 javascript 中, ...

  10. BootstrapBlazor实战-Tree树形控件使用(1)

    实战BootstrapBlazor树型控件Tree的使用, 以及整合Freesql orm快速制作数据库后台维护页面 demo演示的是Sqlite驱动,FreeSql支持多种数据库,MySql/Sql ...