嗯,下面的代码完美无缺, 但我试图用它来封闭 (js的高级和有趣的功能) 但没有成功。 我想了解如何使用闭包来完成这项工作 (并避免内存泄漏,我读过有关闭包的内容)。 如果可能的话,我希望这段代码只能在整个页面之后工作(和 图像已加载)。 这不是我需要完成的事情,而是一些 改进(以及挑战)。我想是一种学习的好方法。这里 是代码。 你可以使用任何美丽的图像作为01.jpg和02.jpg(美丽 景观也许)。任何帮助表示赞赏。 (顺便说一下,spacer.gif是 1x1像素透明图像)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Wow</title>
<script src="jquery-1.12.3.min.js"></script>
<style type="text/css">
body{ margin-top: 0 !important;
margin-bottom: 0 !important;
text-align: center; background-color:#FFFFFF; }
.imgsea { display: block; width: 965px; height: 1885px; alt=""; }
.imginv { display: block; width: 965px; height: 8px; alt=""; }
.imghnt { display: block; width: 965px; height: 40px; alt=""; }
</style>
</head>
<body>
<img src="spacer.gif" class="imghnt">
<img src="01.jpg" class="imgsea">
<img src="spacer.gif" class="imginv">
<img src="02.jpg" class="imgsea">
<img src="spacer.gif" class="imghnt">
</body>
<script>
var posiciones = [0, 636, 1270, 1903, 2536, 3180];
var elementos = 6;
var indis = 0;
var mosca = 0;
$("html, body").keydown(function(e){
if (indis < 0) { indis = 0; }
if (indis > elementos-1) { indis = elementos-1; }
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 34) {
//alert("page down pressed");
e.stopImmediatePropagation();
mosca = posiciones[++indis];
$("html, body").animate({ scrollTop: mosca }, 600);
return false;
}
if (code == 33) {
//alert("page up pressed");
e.stopImmediatePropagation();
mosca = posiciones[--indis];
$("html, body").animate({ scrollTop: mosca }, 600);
return false;
}
});
</script>
</html>