javascript - 不明白 JavaScript 中“n”的使用
问题描述
我正在尝试构建幻灯片/轮播,并且在“ https://www.w3schools.com ”上找到了一些参考。代码非常简单明了,但我不理解 JavaScript 中的逻辑,边界“n”让我发疯。有人可以解释一下我在做什么以及那个“n”的用途吗?
(我无法发布问题,我需要更多的话)Lorem ipsum dolor sit,amet consectetur adipisicing elit。Sint nihil estsumptionnda nam obcaecati sed, dolorem in aut error nesciuntinventreamet deserunt quisquam quis porro laboriosam eaque perferendis nulla, dicta distinctio magni。Fugit nihil consequatur quam magnam fuga explicabo sapiente in esse, perferendis hic ratione placeat aliquam deserunt aperiam?
var slideIndex = 1;
showSlides(slideIndex);
function plusSlides(n) {
showSlides(slideIndex += n);
}
function currentSlide(n) {
showSlides(slideIndex = n);
}
function showSlides(n) {
var i;
var slides = document.getElementsByClassName("mySlides");
var dots = document.getElementsByClassName("dot");
if (n > slides.length) {slideIndex = 1}
if (n < 1) {slideIndex = slides.length}
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
for (i = 0; i < dots.length; i++) {
dots[i].className = dots[i].className.replace(" active", "");
}
slides[slideIndex-1].style.display = "block";
dots[slideIndex-1].className += " active";
}
* {box-sizing: border-box}
body {font-family: Verdana, sans-serif; margin:0}
.mySlides {display: none}
img {vertical-align: middle;}
/* Slideshow container */
.slideshow-container {
max-width: 1000px;
position: relative;
margin: auto;
}
/* Next & previous buttons */
.prev, .next {
cursor: pointer;
position: absolute;
top: 50%;
width: auto;
padding: 16px;
margin-top: -22px;
color: white;
font-weight: bold;
font-size: 18px;
transition: 0.6s ease;
border-radius: 0 3px 3px 0;
user-select: none;
}
/* Position the "next button" to the right */
.next {
right: 0;
border-radius: 3px 0 0 3px;
}
/* On hover, add a black background color with a little bit see-through */
.prev:hover, .next:hover {
background-color: rgba(0,0,0,0.8);
}
/* Caption text */
.text {
color: #f2f2f2;
font-size: 15px;
padding: 8px 12px;
position: absolute;
bottom: 8px;
width: 100%;
text-align: center;
}
/* Number text (1/3 etc) */
.numbertext {
color: #f2f2f2;
font-size: 12px;
padding: 8px 12px;
position: absolute;
top: 0;
}
/* The dots/bullets/indicators */
.dot {
cursor: pointer;
height: 15px;
width: 15px;
margin: 0 2px;
background-color: #bbb;
border-radius: 50%;
display: inline-block;
transition: background-color 0.6s ease;
}
.active, .dot:hover {
background-color: #717171;
}
/* Fading animation */
.fade {
-webkit-animation-name: fade;
-webkit-animation-duration: 1.5s;
animation-name: fade;
animation-duration: 1.5s;
}
@-webkit-keyframes fade {
from {opacity: .4}
to {opacity: 1}
}
@keyframes fade {
from {opacity: .4}
to {opacity: 1}
}
/* On smaller screens, decrease text size */
@media only screen and (max-width: 300px) {
.prev, .next,.text {font-size: 11px}
}
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div class="slideshow-container">
<div class="mySlides fade">
<div class="numbertext">1 / 3</div>
<img src="https://www.w3schools.com/w3css/img_lights.jpg" style="width:100%">
<div class="text">Caption Text</div>
</div>
<div class="mySlides fade">
<div class="numbertext">2 / 3</div>
<img src="https://images.pexels.com/photos/414612/pexels-photo-414612.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500" style="width:100%">
<div class="text">Caption Two</div>
</div>
<div class="mySlides fade">
<div class="numbertext">3 / 3</div>
<img src="https://helpx.adobe.com/in/stock/how-to/visual-reverse-image-search/_jcr_content/main-pars/image.img.jpg/visual-reverse-image-search-v2_1000x560.jpg" style="width:100%">
<div class="text">Caption Three</div>
</div>
<a class="prev" onclick="plusSlides(-1)">❮</a>
<a class="next" onclick="plusSlides(1)">❯</a>
</div>
<br>
<div style="text-align:center">
<span class="dot" onclick="currentSlide(1)"></span>
<span class="dot" onclick="currentSlide(2)"></span>
<span class="dot" onclick="currentSlide(3)"></span>
</div>
</body>
</html>
解决方案
相关代码为:
var slideIndex = 1;
showSlides(slideIndex);
function plusSlides(n) {
showSlides(slideIndex += n);
}
function currentSlide(n) {
showSlides(slideIndex = n);
}
plusSlides
这是一个plusSlides
可能更清晰的版本:
function plusSlides(n) {
slideIndex = slideIndex + n;
showSlides(slideIndex);
}
如果您调用它并传入一个数字,该函数将接收该数字作为参数n
,它:
- 将该数字 (
n
)添加slideIndex
到(这是函数关闭的变量),将结果保存在slideIndex
; 和 - 使用结果调用
showSlides
(刚刚存储在slideIndex
例如,如果slideIndex
是 2 并且您将 1 传递给plusSlides
,它将设置slideIndex
为 3(它的旧值 2 加 1)并在索引 3 处显示幻灯片。
currentSlide
可能更清晰的版本currentSlide
是:
function currentSlide(n) {
slideIndex = n;
showSlides(slideIndex);
}
如果你currentSlide
用一个号码打电话,它会收到这个号码,n
并且
- 设置
slideIndex
为该数字;和 - 调用
showSlides
结果
因此,例如,如果slideIndex
是 2 并且您将 1 传递给currentSlide
,它将设置slideIndex
为 1(替换其旧值)并在索引 1 处显示幻灯片。
推荐阅读
- python-3.x - Python:使用 Numba 签名
- ethereum - 广播离线交易
- firebase-authentication - 如何使用存储在 Firebase 身份验证模拟器中的用户在 Functions Emulator 中验证 Firebase 云功能?
- r - 使用栅格中的多个函数提取值
- bash - 根据目录中的最新文件名替换文本文件中的参数
- javascript - 范围值需要正则表达式
- sql - SQL - 删除总和等于给定数字的随机行
- postgresql - 无法从 docker 容器(.NET Core 应用程序)与主机 droplet 上的 postgreSQL 通信
- unix - 如何在 Unix 中升级 Python
- r - 为类标记的 quanteda 对象删除粘在单词上的数字