1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>121-130章总结</title>
  6. </head>
  7. <body>
  8. <pre>
  9. 121. 滚轮事件
  10. onmousewheel鼠标滚轮滚动的事件,会在滚轮滚动时触发,
  11. 但是火狐不支持该属性
  12. 在火狐中需要使用 DOMMouseScroll 来绑定滚动事件
  13. 注意该事件需要通过addEventListener()函数来绑定
  14. </pre>
  15. <style type="text/css">
  16. #glbox{
  17. width: 100px;
  18. height: 100px;
  19. background-color: red;
  20. }
  21. </style>
  22. <div id="glbox"></div>
  23. <script type="text/javascript">
  24. console.log("第121");
  25. var glbox = document.getElementById("glbox")
  26. glbox.onmousewheel = function(event){
  27. event = event||window.event
  28. //event.wheelDelta 可以获取鼠标滚轮滚动的方向
  29. //向上滚 120 向下滚 -120
  30. //wheelDelta这个值我们不看大小,只看正负
  31. //alert( event.wheelDelta )
  32. //wheelDelta这个属性火狐中不支持
  33. //在火狐中使用event.detail来获取滚动的方向
  34. //向上滚 -3 向下滚 3
  35. //alert(event.detail);
  36. if ( event.wheelDelta > 0 || event.detail < 0) {
  37. if( this.clientHeight >10){
  38. this.style.height = this.clientHeight -10 + "px"
  39. }
  40. } else{
  41. this.style.height = this.clientHeight + 10 + "px"
  42. }
  43. /*
  44. * 使用 addEventListener()方法绑定响应函数,取消默认行为时不能使用return false
  45. * 需要使用event来取消默认行为event.preventDefault();
  46. * 但是IE8不支持event.preventDefault();这个玩意,如果直接调用会报错
  47. */
  48. event.preventDefault && event.preventDefault();
  49. /*
  50. * 当滚轮滚动时,如果浏览器有滚动条,滚动条会随之滚动,
  51. * 这是浏览器的默认行为,如果不希望发生,则可以取消默认行为
  52. */
  53. return false;
  54. }
  55. //为火狐绑定滚轮事件
  56. bind(glbox,"DOMMouseScroll",glbox.onmousewheel);
  57. function bind(obj , eventStr , callback){
  58. if(obj.addEventListener){
  59. obj.addEventListener(eventStr , callback , false);
  60. }else{
  61. obj.attachEvent("on"+eventStr , function(){
  62. callback.call(obj);
  63. });
  64. }
  65. }
  66. </script>
  67. <pre>
  68. 122. 键盘事件
  69. onkeydown
  70. - 按键被按下
  71. - 对于onkeydown来说如果一直按着某个按键不松手,则事件会一直触发
  72. - 当onkeydown连续触发时,第一次和第二次之间会间隔稍微长一点,其他的会非常的快
  73. 这种设计是为了防止误操作的发生。
  74. onkeyup
  75. - 按键被松开
  76. 键盘事件一般都会绑定给一些可以获取到焦点的对象或者是document。
  77. 可以通过keyCode来获取按键的编码
  78. 通过它可以判断哪个按键被按下
  79. 除了 keyCode,事件对象中还提供了几个属性
  80. altKey,ctrlKey,shiftKey
  81. - 这个三个用来判断alt ctrl 和 shift是否被按下,如果按下则返回true,否则返回false
  82. </pre>
  83. <div class="">
  84. <input type="" placeholder="不能输入数字" />
  85. </div>
  86. <script type="text/javascript">
  87. console.log("第122");
  88. document.onkeydown = function(event){
  89. event = event || window.event
  90. var result = event.keyCode
  91. console.log("当前按下的按键值为:" + result)
  92. if ( event.ctrlKey ){
  93. console.log("当前的按下的按键为:Ctrl")
  94. }
  95. //判断y和ctrl是否同时被按下
  96. if( event.keyCode === 89 && event.ctrlKey ){
  97. console.log("ctrl和y都被按下了");
  98. }
  99. }
  100. document.onkeyup = function(){
  101. console.log("按键松开了");
  102. }
  103. var input1 = document.getElementsByTagName("input")
  104. input1[0].onkeydown = function(event){
  105. event = event || window.event
  106. // 使文本框中不能输入数字 48-57
  107. if( event.keyCode>=48 && event.keyCode <= 57 ){
  108. //在文本框中输入内容,属于onkeydown的默认行为
  109. return false
  110. }
  111. }
  112. </script>
  113. <pre>
  114. 123. 键盘移动div
  115. </pre>
  116. <style type="text/css">
  117. #mvBox {height: 200px;position: relative;}
  118. #movebox {width: 100px;height: 100px;background-color: #99FF99;position: absolute;}
  119. </style>
  120. <div id="mvBox">
  121. <div id="movebox"></div>
  122. </div>
  123. <script type="text/javascript">
  124. console.log("第123");
  125. //使div可以根据不同的方向键向不同的方向移动
  126. var mvBox = document.getElementById("mvBox")
  127. var movebox = document.getElementById("movebox")
  128. // 左,上,右,下 37 38 39 40
  129. mvBox.onkeydown = function(event){
  130. event = event || window.event
  131. var speed = 10
  132. if(event.ctrlKey){
  133. speed = 50
  134. }
  135. switch(event.keyCode){
  136. case 37:
  137. movebox.style.left = movebox.offsetLeft - speed +"px"
  138. break
  139. case 38:
  140. movebox.style.top = movebox.offsetTop - speed +"px"
  141. break
  142. case 39:
  143. movebox.style.left = movebox.offsetLeft + speed +"px"
  144. break
  145. case 40:
  146. movebox.style.top = movebox.offsetTop + speed +"px"
  147. break
  148. }
  149. }
  150. </script>
  151. <pre>
  152. 124. BOM
  153. - BOM可以使我们通过JS来操作浏览器
  154. - 在BOM中为我们提供了一组对象,用来完成对浏览器的操作
  155. - BOM对象
  156. Window
  157. - 代表的是整个浏览器的窗口,同时window也是网页中的全局对象
  158. Navigator
  159. - 代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器
  160. Location
  161. - 代表当前浏览器的地址栏信息,通过Location可以获取地址栏信息,或者操作浏览器跳转页面
  162. History
  163. - 代表浏览器的历史记录,可以通过该对象来操作浏览器的历史记录
  164. 由于隐私原因,该对象不能获取到具体的历史记录,只能操作浏览器向前或向后翻页
  165. 而且该操作只在当次访问时有效
  166. Screen
  167. - 代表用户的屏幕的信息,通过该对象可以获取到用户的显示器的相关的信息
  168. 这些BOM对象在浏览器中都是作为window对象的属性保存的,
  169. 可以通过window对象来使用,也可以直接使用。
  170. Navigator
  171. - 代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器
  172. - 由于历史原因,Navigator对象中的大部分属性都已经不能帮助我们识别浏览器了
  173. - 一般我们只会使用userAgent来判断浏览器的信息,
  174. userAgent是一个字符串,这个字符串中包含有用来描述浏览器信息的内容,不同的浏览器会有不同的 userAgent
  175. </pre>
  176. <script type="text/javascript">
  177. console.log("第124");
  178. console.log( Window )
  179. console.log( navigator )
  180. console.log( Location )
  181. console.log( History )
  182. console.log( Screen )
  183. var ua = navigator.userAgent
  184. console.log( ua )
  185. /*
  186. * 火狐的userAgent
  187. * Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
  188. *
  189. * Chrome的userAgent
  190. * Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36
  191. *
  192. * IE8
  193. * Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
  194. *
  195. * IE9
  196. * Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
  197. *
  198. * IE10
  199. * Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
  200. *
  201. * IE11
  202. * Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko
  203. * - 在IE11中已经将微软和IE相关的标识都已经去除了,所以我们基本已经不能通过UserAgent来识别一个浏览器是否是IE了
  204. */
  205. // alert(navigator.appName);
  206. if(/firefox/i.test(ua)){
  207. console.log("你是火狐!!!");
  208. }else if(/chrome/i.test(ua)){
  209. console.log("你是Chrome");
  210. }else if(/msie/i.test(ua)){
  211. console.log("你是IE浏览器~~~");
  212. }else if("ActiveXObject" in window){
  213. console.log("你是IE11,藏的好深啊~~~");
  214. }
  215. /*
  216. * 如果通过UserAgent不能判断,还可以通过一些浏览器中特有的对象,来判断浏览器的信息
  217. * 比如:ActiveXObject
  218. */
  219. if("ActiveXObject" in window){
  220. console.log("你是IE,我已经抓住你了~~~");
  221. }else{
  222. console.log("你不是IE~~~");
  223. }
  224. </script>
  225. <pre>
  226. 125. History
  227. - 对象可以用来操作浏览器向前或向后翻页
  228. </pre>
  229. <div class="">
  230. <h1>History</h1>
  231. <button id="htbtn">点我一下</button>
  232. <a href="111-120章总结.html" target="_blank">去111-120章总结</a>
  233. </div>
  234. <script type="text/javascript">
  235. console.log("第125");
  236. var htbtn =document.getElementById("htbtn")
  237. htbtn.onclick = function(){
  238. // length - 属性,可以获取到当成访问的链接数量
  239. var hl = history.length
  240. console.log(hl)
  241. // back() - 可以用来回退到上一个页面,作用和浏览器的回退按钮一样
  242. //history.back()
  243. // forward() - 可以跳转下一个页面,作用和浏览器的前进按钮一样
  244. //history.forward()
  245. /*
  246. * go()
  247. * - 可以用来跳转到指定的页面
  248. * - 它需要一个整数作为参数
  249. * 1:表示向前跳转一个页面 相当于forward()
  250. * 2:表示向前跳转两个页面
  251. * -1:表示向后跳转一个页面
  252. * -2:表示向后跳转两个页面
  253. */
  254. history.go(-1)
  255. }
  256. </script>
  257. <pre>
  258. 126. Location
  259. 该对象中封装了浏览器的地址栏的信息
  260. </pre>
  261. <div class="">
  262. <button id="ltbtn">点我一下</button>
  263. </div>
  264. <script type="text/javascript">
  265. console.log("第126");
  266. var ltbtn =document.getElementById("ltbtn")
  267. ltbtn.onclick = function(){
  268. // 如果直接打印location,则可以获取到地址栏的信息(当前页面的完整路径)
  269. console.log(location)
  270. // 如果直接将location属性修改为一个完整的路径,或相对路径,则我们页面会自动跳转到该路径,并且会生成相应的历史记录
  271. // location = "http://www.baidu.com"
  272. // assign()- 用来跳转到其他的页面,作用和直接修改location一样
  273. // location.assign("http://www.baidu.com")
  274. // reload() - 用于重新加载当前页面,作用和刷新按钮一样,如果在方法中传递一个true,作为参数,则会强制清空缓存刷新页面
  275. location.reload(true);
  276. // replace() - 可以使用一个新的页面替换当前页面,调用完毕也会跳转页面,不会生成历史记录,不能使用回退按钮回退
  277. // location.replace("http://www.baidu.com")
  278. }
  279. </script>
  280. <pre>
  281. 127. 定时器简介
  282. JS的程序的执行速度是非常非常快的,如果希望一段程序,可以每间隔一段时间执行一次,可以使用定时调用.
  283. setInterval()
  284. - 定时调用
  285. - 可以将一个函数,每隔一段时间执行一次
  286. - 参数:
  287. 1.回调函数,该函数会每隔一段时间被调用一次
  288. 2.每次调用间隔的时间,单位是毫秒
  289. - 返回值:
  290. 返回一个Number类型的数据
  291. 这个数字用来作为定时器的唯一标识.
  292. clearInterval()可以用来关闭一个定时器
  293. 方法中需要一个定时器的标识作为参数,这样将关闭标识对应的定时器
  294. </pre>
  295. <div id="count"></div>
  296. <script type="text/javascript">
  297. console.log("第127");
  298. var count =document.getElementById("count")
  299. var num = 1
  300. var timer = setInterval(function(){
  301. count.innerHTML = num++
  302. if( num==11 ){
  303. clearInterval(timer)
  304. }
  305. },1000)
  306. </script>
  307. <pre>
  308. 128. 切换图片练习
  309. </pre>
  310. <div class="">
  311. <img id="img" src="data:images/1.jpg"/>
  312. <p>
  313. <button id="start" href="javascript:;">开始</button>
  314. <button id="stop" href="javascript:;">停止</button>
  315. </p>
  316. </div>
  317. <script type="text/javascript">
  318. console.log("第128");
  319. var img =document.getElementById("img")
  320. var start =document.getElementById("start")
  321. var stop =document.getElementById("stop")
  322. var imgArr = ["images/1.jpg","images/2.jpg","images/3.jpg","images/4.jpg","images/5.jpg"]
  323. var index = 0
  324. var timer2
  325. start.onclick = function(){
  326. /*
  327. * 目前,我们每点击一次按钮,就会开启一个定时器,
  328. * 点击多次就会开启多个定时器,这就导致图片的切换速度过快,
  329. * 并且我们只能关闭最后一次开启的定时器
  330. */
  331. //在开启定时器之前,需要将当前元素上的其他定时器关闭
  332. clearInterval(timer2)
  333. timer2 = setInterval(function(){
  334. index++
  335. index %= imgArr.length
  336. img.src = imgArr[index]
  337. },1000)
  338. }
  339. stop.onclick = function(){
  340. clearInterval(timer2)
  341. }
  342. </script>
  343. <pre>
  344. 129. 修改div移动练习
  345. </pre>
  346. <div id="editBox" style="height: 300px;position: relative;">
  347. <div id="editMove" style="position: absolute;height: 100px;width: 100px;background-color: #f00;"></div>
  348. </div>
  349. <script type="text/javascript">
  350. console.log("第129");
  351. var dir = 0
  352. var speed = 10
  353. var timer3
  354. var editBox = document.getElementById("editBox")
  355. var editMove = document.getElementById("editMove")
  356. timer3 = setInterval(function(){
  357. switch(dir){
  358. case 37:
  359. //alert("向左"); left值减小
  360. editMove.style.left = editMove.offsetLeft - speed + "px";
  361. break;
  362. case 39:
  363. //alert("向右");
  364. editMove.style.left = editMove.offsetLeft + speed + "px";
  365. break;
  366. case 38:
  367. //alert("向上");
  368. editMove.style.top = editMove.offsetTop - speed + "px";
  369. break;
  370. case 40:
  371. //alert("向下");
  372. editMove.style.top = editMove.offsetTop + speed + "px";
  373. break;
  374. }
  375. },30)
  376. editBox.onkeydown = function(event){
  377. event = event || window.event
  378. dir = event.keyCode
  379. }
  380. editBox.onkeyup = function(){
  381. dir=0
  382. }
  383. </script>
  384. <pre>
  385. 130. 延时调用
  386. 延时调用一个函数不马上执行,而是隔一段时间以后在执行,而且只会执行一次.
  387. 延时调用和定时调用的区别,定时调用会执行多次,而延时调用只会执行一次.
  388. 延时调用和定时调用实际上是可以互相代替的,在开发中可以根据自己需要去选择.
  389. 使用clearTimeout()来关闭一个延时调用
  390. </pre>
  391. <script type="text/javascript">
  392. console.log("第130");
  393. var ynum = 1
  394. var timer4 = setTimeout(function(){
  395. console.log(ynum++)
  396. },1000)
  397. clearTimeout(timer4)
  398. </script>
  399. </body>
  400. </html>

JavaScript基础视频教程总结(121-130章)相关推荐

  1. JavaScript基础视频教程总结(091-100章)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. JavaScript基础视频教程总结(081-090章)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. Web前端开发精品课HTML CSS JavaScript基础教程第十四章课后编程题答案

    编程题: 下面有一段代码,请在这段代码的基础上使用正确的选择器以及这两章学到的字体样式.文本样式来实现图14-13所示的效果. <!DOCTYPE html> <html> & ...

  4. 视频教程-2020全新Javascript基础面试视频前端js教程-JavaScript

    2020全新Javascript基础面试视频前端js教程 7年的开发架构经验,曾就职于国内一线互联网公司,开发工程师,现在是某创业公司技术负责人, 擅长语言有node/java/python,专注于服 ...

  5. 第五模块·WEB开发基础-第2章JavaScript基础

    第1章 JavaScript基础 01-JavaScript历史介绍 02-JavaScript的组成 03-JavaScript的引入方式 04-变量的使用 05-基本数据类型(一) 06-基本数据 ...

  6. javascript百炼成仙 第一章 掌握JavaScript基础1.6 叶老

    这一日,叶小凡来到青山院附近的小山上修炼,忽然,被一块石头绊了一跤.正在他自认倒霉打算爬起来的时候,在石头缝里边发现了一枚古怪的戒指.戒指通体呈现一种枯黄色,似有一些年代悠久之感. "摔了一 ...

  7. javascript百炼成仙 第一章 掌握JavaScript基础01 初入宗门

    前些天发现了一个巨牛的人工智能学习博客,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转 乐阳村,处于脚本大陆东部的边缘地带,民风淳朴,村民日出而作,日落而息.这一日清晨,所有村民来到村庄的门口,正 ...

  8. javascript百炼成仙 第一章 掌握JavaScript基础1.8 对象的取值

    "小娃娃,我现在问你,如果我事先不知道对象的某个属性叫什么,那又该怎么访问对象中对应这个属性的值呢?"叶老笑呵呵地问到. "什么什么,事先都不知道对象的属性名称,那怎么可 ...

  9. javascript百炼成仙 第一章 掌握JavaScript基础1.4数据类型

    修行还在继续,随着对要诀的深入,叶小凡明白,在编程世界,刚才的直接量都属于一种数据.和人有男女一样,数据也是有类型的. 在JavaScript中,数据可分为两类,分别为原生数据类型(primitive ...

最新文章

  1. 网格搜索后返回的就是最佳的模型
  2. 如何固定最小宽度_第018期 安全疏散——疏散宽度
  3. 实验五 Java网络编程及安全 实验报告 20135232王玥
  4. ROS探索总结(十六)(十七)(十八)(十九)——HRMRP机器人的设计 构建完整的机器人应用系统 重读tf 如何配置机器人的导航功能
  5. failed to find romfile efi-virtio.rom
  6. 文件权限二(特殊权限、隐藏属性、文件访问控制列表、切换用户方式)
  7. 让AI学习如何玩游戏 OpenAI打造强化学习通用模型
  8. oracle中视图窗粉色的,Oracle 11g日常操作与维护手册
  9. 2021年上半年直播电商行业洞察
  10. Docker快速安装Sybase数据库DBeaver数据库图形化管理开发工具
  11. sql 系统 存储过程的使用方法 转载
  12. TP5模型修改器和读取器
  13. Python类中的__init__,__del__和__call__方法
  14. optisystem中bit rate等全局参数的意义
  15. 解决谷歌浏览器自动填充表单
  16. 【自学51单片机】1 -- 初步认识单片机及其学习方法 和 单片机基础知识介绍
  17. 1972 年 11 月 29 日:雅达利推出投币式街机游戏《乓》
  18. 硬件工程师笔试题目1(同上)
  19. win10控制面板快捷键_你没玩过的全新版本:Win10这些操作你知多少
  20. 微信sae云服务器后台创建

热门文章

  1. 【100个 Unity实用技能】☀️ | Unity 复用动画控制器 Animator Override Controller 的简单使用
  2. 王国维的人生三重境界
  3. 摘要算法与数字签名和数字信封
  4. select实现---多选下拉框
  5. 教你ios10怎么降级到ios9.3.2
  6. 【北京】安全研究员/工程师-20-35K,人体工程学座椅坐等你来~
  7. 小程序自定义组件以及使用组件方法
  8. Eclipse安装PyDev插件后不显示问题解决方案
  9. kiss原则包括什么_kiss原则包括职场沟通 职场新人如何把握原则
  10. pcm a律编码 c语言,求大神,讲解A律PCM编码吖