<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>Document</title> <style type="text/css"> .div_common{ width: 100px; height: 100px; float:left; background: red; margin-right: 10px; } .p_common{ position: relative; top:40px; left:-440px; float:left; margin-right: 16px; } </style> </head> <body> <div class="div_common"></div> <div class="div_common"></div> <div class="div_common"></div> <div class="div_common"></div> <p class="p_common">这是一个测试</p> <p class="p_common">这是一个测试</p> <p class="p_common">这是一个测试</p> <p class="p_common">这是一个测试</p> <script type="text/javascript"> var div_common = document.getElementsByClassName("div_common"); var p_common = document.getElementsByClassName("p_common"); for (var i = 0;i < 4;i++) { (function(i) { div_common[i].onclick = function() { p_common[i].style.display = "none"; } })(i); } </script> </body> </html>
想点击第一个div时,第一个div上的文字消失不见,点击第二个div时,第二个div上的文字消失不见......
知道这是一个闭包问题,可是不知道怎么解决,求解答,谢谢
这并不是闭包问题,只是因为你把某个p元素隐藏之后,后面的元素往前跑导致的。
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>Document</title> <style type="text/css"> .div_common { width: 100px; height: 100px; float: left; background: red; margin-right: 10px; } </style> </head> <body> <div class="div_common"> <p class="p_common">这是一个测试</p> </div> <div class="div_common"> <p class="p_common">这是一个测试</p> </div> <div class="div_common"> <p class="p_common">这是一个测试</p> </div> <div class="div_common"> <p class="p_common">这是一个测试</p> </div> <script type="text/javascript"> var div_common = document.getElementsByClassName("div_common"); var p_common = document.getElementsByClassName("p_common"); for (var i = 0; i < 4; i++) { (function (i) { div_common[i].onclick = function () { console.log(i); p_common[i].style.display = "none"; } })(i); } </script> </body> </html> 想点击第一个div时,第一个div上的文字消失不见,点击第二个div时,第二个div上的文字消失不见...... 知道这是一个闭包问题,可是不知道怎么解决,求解答,谢谢
明白了,是不是当点击其中一个div时,div对应的p元素消失,消失的p元素所占的空间被其他的p元素所代替