链接可以说遍布互联网,比如你想提供一个可以跳转到百度首页的链接给网友,那么代码如下:

<a href="http://www.baidu.com">百度一下,你就知道</a>

而如果这个链接指向的网址你想在浏览器中的新窗口中打开,那么代码如下:

<a href="http://www.baidu.com" target="_blank">百度一下,你就知道</a>

那如果我页面中有一堆的a链接都想在新窗口中打开呢?难道得为一个个链接添加 target="_blank" ?其实只需在页面中插入一个base标签就可以实现了,base标签一般是放到网页的head标签里面,base标签的代码如下:

<base target="_blank" />

下面区分下a链接容易混淆的知识点:

<a href="">这是一个空链接</a>
<a href="#">这是一个#链接</a>
<a href="javascript:;">这是一个'javascript:;'链接</a>

这三种其实是有区别的,第一种空链接点击后会刷新页面,而后面两种写法点击后不会刷新页面;

但是但是但是,第二种写法#链接其实还有一个独特的用法,比如以下代码:

<a href="#foot">这是一个#链接</a>
...
.此处省略很多页面内容.
...
<footer id="foot">
这是页面底部
</footer>

如果一个页面内容很长,我们想在页面头部设置一个链接方便用户点击后直接跳转到当前页面的底部浏览就可以使用上面的写法来实现了,注意 href="#foot"  与  id="foot"  中的foot必须一致否则无效。

下面来个问题:

<a href="javascript:alert('这是href弹出的');" onclick = "javascript:alert('这是onclick弹出的');">这是一个链接</a>

你觉得哪个的js代码会执行呢? 其实onclick的alert会先被执行。

注意onclick的'javascript:'可以省略不写,而href属性执行js代码时的'javascript:'不能省略。

下面来谈谈a链接调用函数易混淆的地方:

    <a href="javascript:fnHref();" onclick = "fnLink()">这是链接一</a>

    <a href="javascript:fnHref();" onclick = "return fnLink()">这是链接二</a>

    <a href="javascript:fnHref();" onclick = "return false;fnLink()">这是链接三</a>

    <a href="javascript:;" onclick = "fnLink()">这是链接四</a>

    <a href="#" onclick = "fnLink()">这是链接五</a>
<script>
function fnHref(){
alert(1);
} function fnLink(){
alert(2);
}
</script>

上面的script代码段其实写到a链接的前面或后面都可以正常运行,因为js有 预解析机制。

链接一点击后:先弹2后弹1

链接二点击后:先弹2后弹1

链接三点击后:onclick事件触发后直接return false(程序返回假),后面的代码统统不执行,所以啥也没弹

链接四点击后:弹2然后没有然后了

链接五点击后:弹2然后没有然后了,其实链接五与链接四效果一模一样。

举一反三:其实form表单中的action(类似a链接里面的href)与onsubmit(类似onclick)写法类似。

    <form action="#" method="get" id="myform1" onsubmit="checkForm()">
<label>用户名:</label>
<input type="text" placeholder="请输入用户名" name="username" />
<label>密码:</label>
<input type="password" name="pw" />
<input type="submit" value="注册" name="sub" />
</form>
<script>
function checkForm(){ /*当submit按钮被点击时会触发此函数*/
if(myform1.username.value == '') {
alert('用户名不能为空');
return false; //中止程序运行,终止action提交。
}
}
</script>
												

a链接易混淆与form表单简易验证用法详解的更多相关文章

  1. form表单target的用法,实现无刷新提交页面

    form表单的target,当将iframe设置为隐藏时,可以实现当前页表单提交而不进行跳转刷新.代码如下,首页在页面里准备一个form表单和一个iframe. <form action=&qu ...

  2. form表单target的用法

    偶然有一机会发现form表单的target的用法,可以实现当前页表单提交而不进行跳转刷新.代码如下,首页在页面里准备一form表单和一iframe <form action="提交的a ...

  3. 深入了解Element Form表单动态验证问题 转载

    随风丶逆风 2020-04-03 15:36:41  2208  收藏 3 分类专栏: Vue 随笔 文章标签: 动态验证 el-form elementUI 表单验证 版权 在上一篇<vue ...

  4. 重写form 表单的验证信息

    (function($) { var isformValidationPostBack=true; var isformValidation = false; $.extend({ formValid ...

  5. form 表单jquery验证插件使用

    第一部分:表单样式 <form action="#" method="post" id="regist">   <tabl ...

  6. Vue Element Form表单时间验证控件使用

    如果直接使用Element做时间选择器,其规则(rules)不添加type:'date',会提示类型错误,处理这个需要规范值的类型为date. 时间格式化过滤器 import Vue from 'vu ...

  7. Jquery ajax提交表单几种方法详解

    [导读] 在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$( 表单ID) serialize();就行了,下面我来介绍两个提交表单数据的 ...

  8. input表单的type属性详解,不同type不同属性之间区别

    目标:详解表单input标签type属性常用的属性值 一.input标签和它的type属性 PS:input 元素可以用来生成一个供用户输入数据的简单文本框. 在默认的情况下, 什么样的数据均可以输入 ...

  9. JavaScript表单序列化的方法详解

    本文介绍下,在javascript中实现表单序列化的方法,通过实例加深理解,有需要的朋友参考下吧. 在JavaScript中,可以利用表单字段的type属性,连同name和value属性一起实现对表单 ...

随机推荐

  1. 不受控制的 position:fixed

    本文为纯理论文章,没有 Demo,没有配图,可能会略微枯燥. 大家都知道,position:fixed 在日常的页面布局中非常常用,在许多布局中起到了关键的作用.它的作用是: position:fix ...

  2. 【NO.3-2】Jmeter - 在Linux配置HOSTS的方法

    在Linux配置HOSTS 咱平时在Windows系统做web测试的时候需要修改HOSTS文件.Linux也一样. /*在Linux执行性能测试的时候,很容易忘记配置HOSTS,那么你发送的请求的响应 ...

  3. Linux - 简明Shell编程10 - 管道(Pipe)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash echo '##### Num ...

  4. macOS Sierra Version 10.12.6 环境下Tomcat的下载与安装以及InterlliJ IDEA 2017.2 环境下配置Tomcat 与创建Web项目

    一.Tomcat的下载与安装 1.官网(http://tomcat.apache.org/)下载Tomcat 9.0 Core:zip包: 2.解压到指定的文件夹即可安装完成: 3.测试是否安装成功 ...

  5. ABP从入门到精通(5):使用基于JWT标准的Token访问WebApi

    项目:asp.net zero 4.2.0 .net core(1.1) 版本 我们做项目的时候可能会遇到需要提供api给app调用,ABP动态生成的WebApi提供了方便的基于JWT标准的Token ...

  6. Mysql中较为复杂的分组统计去重复值

    这是我的代码: 前提是做了一个view:att_sumbase 首先分开统计每天的中午.下午饭点人数,这时需要分别去除中午和下午重复打卡的人.用了记录集的交,嵌套select的知识. 注意不能直接使用 ...

  7. 细说 Azure Storage 的冗余策略

    当我们想要把应用搬到云端的时候,首先要关注的便是数据的安全性.当然所有的云服务厂商都会对用户数据承诺一个非常高的安全性,但万一出现意外呢?我们是不是还要有适当的应对方案?比如今年的3月8日晚间,Azu ...

  8. 获取MVC中Controller下的Action参数异常

    我现在做的一个项目有一个这样的需求, 比如有一个页面需要一个Guid类型的参数: public ActionResult Index(Guid id) { //doing something ... ...

  9. windows转储文件(dmp)

    1. 何为转储文件      转储文件也就是我们常说的dump文件.可以把转储文件看成软件的某个时刻的一个快照.转储文件一般都是在软件出现问题时手动生成或者程序自动生成.下面我们介绍几种生成转储文件的 ...

  10. (转)没有IE就没有伤害!浏览器兼容性问题解决方案汇总

    普及:浏览器的兼容性问题,往往是个别浏览器(没错,就是那个与众不同的浏览器)对于一些标准的定义不一致导致的.俗话说:没有IE就没有伤害. 贴士:内容都是自己总结的,不免会出现错误或者bug,欢迎更正和 ...