【发布时间】:2019-11-02 05:36:53
【问题描述】:
我只想这样做:(index++ 或 index-- 单击按钮时)但它的值不会改变(始终为零)。我想我不能转移一些价值。一定是增加还是减少??有两个功能。一个是增加我的索引变量,另一个是减少它。但最终 index 保持为 0。
$(document).ready(function () {
"use strict";
const carousel_baslik = $(".carousel-baslik")[0];
const carousel_metin = $(".carousel-metin")[0];
const carousel_image = $(".carousel-image")[0];
const counter = $("#counter")[0];
const icon = $("#icon-ground")[0];
const controller1 = $(".carousel-controller")[0];
const controller2 = $(".carousel-controller")[1];
var index = 0;
class Request {
get(url) {
return new Promise((resolve, reject) => {
fetch(url).then(res => res.json()).then(data => resolve(data)).catch(err => reject(err));
})
}
}
const Requesting = new Request();
Requesting.get("js/carousel.json").then(data => {
const slides = data.length;
controller1.addEventListener("click", function (slideCount) {
geri(slides);
});
controller2.addEventListener("click", function (slideCount) {
ileri(slides);
});
add(data);
});
function geri(slideCount) {
index--;
showSlides(slideCount);
console.log("index:" + " " + index);
console.log("slideCount:" + " " + slideCount);
}
function ileri(slideCount) {
index++;
showSlides(slideCount);
console.log("index:" + " " + index);
console.log("slideCount:" + " " + slideCount);
}
function showSlides(slideCount) {
index = slideCount;
if (index < 0) {
index = slideCount - 1;
}
if (index >= slideCount) {
index = 0;
}
// console.log(index);
}
function add(data) {
carousel_baslik.textContent = data[index].baslik;
carousel_metin.innerHTML = data[index].metin;
carousel_image.src = data[index].image;
counter.textContent = data[index].count;
const img = document.createElement("img");
img.src = data[index].icon;
img.className = "w-100";
img.alt = "";
icon.appendChild(img);
}
});
结果:总是索引 0
我的最后一次编辑(索引增加和减少,但数据不添加到 HTML):
$(document).ready(function () {
"use strict";
const carousel_baslik = $(".carousel-baslik")[0];
const carousel_metin = $(".carousel-metin")[0];
const carousel_image = $(".carousel-image")[0];
const counter = $("#counter")[0];
const icon = $("#icon-ground")[0];
const controller1 = $(".carousel-controller")[0];
const controller2 = $(".carousel-controller")[1];
var index = 0;
class Request {
get(url) {
return new Promise((resolve, reject) => {
fetch(url).then(res => res.json()).then(data => resolve(data)).catch(err => reject(err));
})
}
}
const Requesting = new Request();
Requesting.get("js/carousel.json").then(data => {
controller1.addEventListener("click", geri);
controller2.addEventListener("click", ileri);
add(data);
});
function add(data) {
carousel_baslik.textContent = data[index].baslik;
carousel_metin.innerHTML = data[index].metin;
carousel_image.src = data[index].image;
counter.textContent = data[index].count;
const img = document.createElement("img");
img.src = data[index].icon;
img.className = "w-100";
icon.appendChild(img);
}
function geri() {
index--;
console.log(index);
}
function ileri() {
index++;
console.log(index);
}
});
【问题讨论】:
-
我认为值得您阅读 minimal reproducible example 页面。
-
我意识到
showSlides可能是一种循环方法,但您是否尝试过评论它以查看是否是罪魁祸首?它立即将索引更改为幻灯片计数,然后将索引更新为 0 或 slideCount - 1。 -
当你调用一个函数
index--; showSlides(slideCount);时,你增加索引,然后在下一行将它设置为另一个数字
标签: javascript json promise fetch