假期里入门JS的一些感受(一个小坑)
来源:互联网 发布:php去掉所有html标签 编辑:程序博客网 时间:2024/06/14 16:18
假期里JS入门小结
无聊的假期结束了,浑浑噩噩的度过了寒假。假期里学习了一丢丢JS ,也遇到了一些坑,总结一下。
1、let 和 var
背景描述: 我定义了三个li,想利用for循环来完成每个li标签对应的鼠标事件。
理想结果:当鼠标移动到某一个li时,执行当前li标签的鼠标事件函数。
var oLi=document.getElementsByTagName('li'); for(var s=0;s<oLi.length;s++){ oLi[s].onmouseover= function(){ alert(s); var btn = oLi[s].getElementsByTagName('button'); btn[0].style.display="inline"; } oLi[s].onmouseout= function(){ var btn = oLi[s].getElementsByTagName('button'); btn[0].style.display="none"; } }
事实结果:并没有执行鼠标移动事件,检查代码,并没有错误,万不得已alert(s);结果发现 alert结果始终是3,不管鼠标在哪个li上面。
怎么解决的: let
var oLi=document.getElementsByTagName('li'); for(let s=0;s<oLi.length;s++){ //这里的var改成let oLi[s].onmouseover= function(){ alert(s); var btn = oLi[s].getElementsByTagName('button'); btn[0].style.display="inline"; } oLi[s].onmouseout= function(){ var btn = oLi[s].getElementsByTagName('button'); btn[0].style.display="none"; } }
结果如我所愿。
可以实现,当鼠标移动到第一个li时,alert结果为0,当鼠标移动到第二个li时,alert结果为1,当鼠标移动到第三个li时,alert结果为2。功能实现。
重点内容:let 和var 的区别是什么呢? 为什么let可以而var就可以呢?
简单的来说,let定义的是块级变量,而var 定义的是全局或者整个函数内的变量。也就是说两者定义的变量作用范围不同。
function varTest() { var x = 1; if (true) { var x = 2; // 同样的变量! console.log(x); // 2 } console.log(x); // 2}function letTest() { let x = 1; if (true) { let x = 2; // 不同的变量 console.log(x); // 2 } console.log(x); // 1}
在不使用let的情况下,使用var可以吗?
当然可以,代码如下:
function btnshow(){ var itemLists=document.getElementsByTagName('li'); for(var s=0;s<itemLists.length;s++){ itemLists[s].index=s;//使用index属性获取当前li的index,将id名(建议定义class名)设置为b加上当前li的index值,便可实现功能。 itemLists[s].onmouseover=function(){ var str= document.getElementById(str).style.display="inline"; } }
1 0
- 假期里入门JS的一些感受(一个小坑)
- 一个小的OS内核,一些感受,一些总结。
- 我和linux ( ubuntu的一些小感受 )
- 每天学习的一些小感受
- Linux里的一些小坑
- 最近一个月以来找工作的一些感受(转载)
- 在js里一个小技巧
- js里的一些知识
- 记js的一些小坑(未完)
- js中一些常见的小坑
- JS(javascript)的一些小技巧
- 五一假期感受
- Node.js教程(二)入门阶段的一些坑
- 过一个有意义的假期
- 毕业近一个月,工作近期的一些感受。
- 小假期
- 学院里的一些小幽默
- thinkphp里的一些小技巧
- 《Java网络编程》摘要
- [Android新手学习笔记31]-Broadcast-本地广播
- 跟着《Python网络数据采集》学爬虫2
- 编写Makefile规则
- [Android新手学习笔记32]-Broadcast-强制下线
- 假期里入门JS的一些感受(一个小坑)
- ListView嵌套GridView出现的问题及解决方法
- 【BZOJ 1800】【AHOI 2009】飞行棋
- C#解析Cookie字符串为CookieCollection
- [Android新手学习笔记33]-Storage-文件存储
- Java中的局部变量表及使用jclasslib进行查看
- [Android新手学习笔记34]-Storage-SharedPreferences
- 【解题报告】Codeforces Round #395 (Div. 2)
- [Android新手学习笔记35]-Storage-SQLite