JavaScript中的this妙用实例分析


Posted in Javascript onMay 09, 2020

本文实例讲述了JavaScript中的this妙用。分享给大家供大家参考,具体如下:

JavaScript关键字this始JS脚本能够根据使用这个关键字的上下文将值传递给函数。

我们先来看如下一个网页,在用户单击链接之后,弹出一个alert框,然后再转到href属性所指的网页

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JavaScript中的this妙用</title>
  <script type="text/javascript" src="js/script.js"></script>
</head>
<body>
  <p style="text-algin:center;">
    你好,点击这里去<a id="redirect" href="http://www.mybry.com/obj/store/list.html" rel="external nofollow" >旧物商店</a>
  </p>
</body>
</html>

JS:

window.onload = initAll;
function initAll(){
  document.getElementById("redirect").onclick = initRedirect;
}
function initRedirect(){
  alert("这是我创建的旧物商城,欢迎访问!");
  window.location = this;
  return false;
}

你可能会主要到,代码中并没有引用特定的网页——这是this关键字的作用之一。this替我们完成的工作之一是从HTML链接获得URL(也就是a标签的href属性)。由于采用这种方式,如果以后脚本改为指向其他的页面而不是旧物商店页面,就不必修改JS。实际上,可以让WEB站点上的所有链接都调用这个相同的JS代码,这一行代码都会自动获得相应的href值。

这样写还有一个好处:如果用户的浏览器不理解JavaScript(比如禁用了JS),那么它只会加载HTML页面,而不显示alert提示,当他们点击链接时,会像一般情况下那样加载页面,不会发生错误,没有任何问题。
我们在来看一个switch/case例子,创建如下页面:

JavaScript中的this妙用实例分析

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JavaScript中的this妙用</title>
  <script type="text/javascript" src="js/script.js"></script>
</head>
<body>
  <h2>闲置二手图书</h2>
  <form action="#">
    <input type="button" id="Java" value="Java" />
    <input type="button" id="JavaScript" value="JavaScript" />
    <input type="button" id="MySQL" value="MySQL" />
    <input type="button" id="Html" value="HTML5" />
  </form>
</body>
</html>

JS:

window.onload = initAll;
function initAll(){
  document.getElementById("Java").onclick = viewDetail;
  document.getElementById("JavaScript").onclick = viewDetail;
  document.getElementById("MySQL").onclick = viewDetail;
  document.getElementById("Html").onclick = viewDetail;
}
function viewDetail(){
  console.log("this.id="+this.id);
  switch(this.id){
    case "Java" : 
      alert("《Java程序员基本功》这本书是李刚写的,在我的商店售价30元!");
      break;
    case "JavaScript" : 
      alert("《JavaScript语言精粹》这本书是Yahoo的一位工程师写的,在我的商店售价15元!");
      break;
    case "MySQL" : 
      alert("《MySQL入门很简单》这本书附带关盘,这个年代其实没什么卵用了,它在我的商店售价28元!");
      break;
    case "Html" : 
      alert("《HTML5秘籍》这本书是图灵系统的图书,非常值得拥有,它在我的商店售价25元,卖的非常好!");
      break;
    default : 
      alert("没有这本书");
  }
}

直接用this.id作为switch的参数也是可以的。

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript call和apply方法
Nov 24 Javascript
jquery监控数据是否变化(修正版)
Apr 12 Javascript
js关闭子窗体刷新父窗体实现方法
Dec 04 Javascript
Javascript脚本实现静态网页加密实例代码
Nov 05 Javascript
JQuery中的html()、text()、val()区别示例介绍
Sep 01 Javascript
Jquery 实现checkbox全选方法
Jan 28 Javascript
Node.js复制文件的方法示例
Dec 29 Javascript
JS 实现 ajax 异步浏览器兼容问题
Jan 21 Javascript
一道面试题引发的对javascript类型转换的思考
Mar 06 Javascript
深入对Vue.js $watch方法的理解
Mar 20 Javascript
angular框架实现全选与单选chekbox的自定义
Jul 06 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
Oct 26 Javascript
JavaScript中继承原理与用法实例入门
May 09 #Javascript
jQuery三组基本动画与自定义动画操作实例总结
May 09 #jQuery
JavaScript进阶(四)原型与原型链用法实例分析
May 09 #Javascript
JavaScript进阶(三)闭包原理与用法详解
May 09 #Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
May 09 #Javascript
JavaScript进阶(一)变量声明提升实例分析
May 09 #Javascript
JavaScript面向对象核心知识与概念归纳整理
May 09 #Javascript
You might like
Oracle Faq(Oracle的版本)
2006/10/09 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
js 弹出菜单/窗口效果
2011/10/30 Javascript
Jquery 自定义动画概述及示例
2013/03/29 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
老海军美国官网:Old Navy
2016/09/05 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
电大毕业生自我鉴定
2013/11/10 职场文书
酒店保洁主管岗位职责
2013/11/28 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
2015年暑期见闻
2015/07/14 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python