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 学习笔记(十五)
Jan 28 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
Mar 01 Javascript
Js 回车换行处理的办法及replace方法应用
Jan 24 Javascript
jquery实现div阴影效果示例代码
Sep 16 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
Jun 16 Javascript
基于Javascript实现返回顶部按钮
Feb 29 Javascript
JQuery异步加载PartialView的方法
Jun 07 Javascript
详解Angular的双向数据绑定(MV-VM)
Dec 26 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
Jul 12 Javascript
浅谈JavaScript作用域和闭包
Sep 18 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
May 08 Javascript
微信小程序新闻网站详情页实例代码
Jan 10 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,ajax实现分页
2008/03/27 PHP
php读取excel文件的简单实例
2013/08/26 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
pyqt5实现俄罗斯方块游戏
2019/01/11 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
Python发送邮件实现基础解析
2020/08/14 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
.net软件工程师应聘上机试题
2015/03/10 面试题
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
安全生产专项整治方案
2014/05/06 职场文书
小学生自我评价100字(15篇)
2014/09/18 职场文书
小学生成绩单评语
2014/12/31 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
员工辞退通知书
2015/04/17 职场文书
2016新春团拜会致辞
2015/08/01 职场文书
HTTP中的Content-type详解
2022/01/18 HTML / CSS
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技