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 相关文章推荐
仅IE支持clearAttributes/mergeAttributes方法使用介绍
May 04 Javascript
javascript 表格内容排序 简单操作示例代码
Jan 03 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
Apr 17 Javascript
js获取 type=radio 值的方法
May 09 Javascript
用js一次改变多个input的readonly属性值的方法
Jun 11 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
Mar 18 Javascript
在JavaScript中如何解决用execCommand(
Oct 19 Javascript
js判断上传文件后缀名是否合法
Jan 28 Javascript
对vux点击事件的优化详解
Aug 28 Javascript
Openlayers学习之地图比例尺控件
Sep 28 Javascript
vue3.0 加载json的方法(非ajax)
Oct 26 Javascript
Javascript使用integrity属性进行安全验证
Nov 07 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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
详解:――如何将图片储存在数据库里
2006/12/05 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
JS 自动安装exe程序
2008/11/30 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
python re库的正则表达式入门学习教程
2019/03/08 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
Web时代变迁及html5与html4的区别
2016/01/06 HTML / CSS
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
海滩咖啡馆:Beach Cafe
2018/02/02 全球购物
宿舍使用违章电器检讨书
2014/01/12 职场文书
借条如何写
2015/05/26 职场文书
学生会招新宣传语
2015/07/13 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
Redis可视化客户端小结
2021/06/10 Redis
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android