作业检查 和疑问解答
来源:3-13 编程练习
与民桐乐
2022-06-02 20:57:19
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
</style>
</head>
<body>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
<li>jquery</li>
<li>HTML5</li>
<li>CSS3</li>
<li>ES6</li>
</ul>
<script type="text/javascript">
// 补充代码
var oli = document.querySelectorAll('li')
for (let i =0 ; i< oli.length;i++){
let text = oli[i].innerHTML
oli[i].onmouseenter = function(){
oli[i].style.color = 'red';
oli[i].style.fontSize = 'x-large';
oli[i].innerHTML = text + "我是第" + (i+1) +"个";
}
oli[i].onmouseleave = function(){
oli[i].style.color = '';
oli[i].style.fontSize = '';
oli[i].innerHTML = text ;
}
}
</script>
</body>
</html>问题描述
let text = oli[i].innerHTML 如果改为var text ,为什么每个离开都会成为li的最后一项内容,能否解答当是var的时候原理。 相关截图:
:
1回答
好帮手慕星星
2022-06-04
同学你好,代码实现效果很棒!
针对提问回复:
如果let改为var,那么text变量是全局的。for循环会先执行完毕。那么oli[i].innerHTML中的i值也就是最后一次循环的i值,获取的是es6内容。所以每次离开都是es6 。let会形成块级作用域,每次循环获取的内容都是当前的,所以离开的时候会保持一致。
祝学习愉快!
相似问题