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实现鼠标滑过图片变换效果的方法
Apr 16 Javascript
jQuery实现的淡入淡出二级菜单效果代码
Sep 15 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
Mar 30 Javascript
每日十条JavaScript经验技巧(一)
Jun 23 Javascript
EasyUI学习之Combobox级联下拉列表(2)
Dec 29 Javascript
图解Javascript——作用域、作用域链、闭包
Mar 21 Javascript
基于JavaScript实现选项卡效果
Jul 21 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
Aug 16 Javascript
微信小程序如何使用globalData的方法
Jun 06 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
Jun 10 Javascript
jQuery实现简单三级联动效果
Sep 05 jQuery
如何在CocosCreator里画个炫酷的雷达图
Apr 16 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中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
js滑动提示效果代码分享
2016/03/10 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
2016/11/30 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
基于js中document.cookie全面解析
2017/09/14 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Python入门教程之运算符与控制流
2016/08/17 Python
解决DataFrame排序sort的问题
2018/06/07 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
python检测IP地址变化并触发事件
2018/12/26 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
Pycharm修改python路径过程图解
2020/05/22 Python
Python字符串三种格式化输出
2020/09/17 Python
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
2015年中学校长工作总结
2015/05/19 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python