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 相关文章推荐
文本框的字数限制功能jquery插件
Nov 24 Javascript
Ext grid 添加右击菜单
Nov 26 Javascript
基于jquery的tab切换 js原理
Apr 01 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
Aug 21 Javascript
javascript移动开发中touch触摸事件详解
Mar 18 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
Aug 31 Javascript
jquery实现倒计时小应用
Sep 19 jQuery
jquery ajaxfileupload异步上传插件
Nov 21 jQuery
浅谈React深度编程之受控组件与非受控组件
Dec 26 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
Oct 24 Javascript
使用webpack打包后的vue项目如何正确运行(express)
Oct 26 Javascript
JS异步处理的进化史深入讲解
Aug 25 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
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
封装的jquery翻页滚动(示例代码)
2013/11/18 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
vue.js的简单自动求和计算实例
2019/11/08 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
Python linecache.getline()读取文件中特定一行的脚本
2008/09/06 Python
详解Python的Lambda函数与排序
2016/10/25 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
python实现超级玛丽游戏
2020/03/18 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
英语自荐信常用语句
2013/12/13 职场文书
土木工程师职业规划范文
2014/03/07 职场文书
七匹狼男装广告词
2014/03/21 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
学生吸烟检讨书
2014/09/14 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
MySQL七大JOIN的具体使用
2022/02/28 MySQL
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL