所以我在搜索页面上工作,我有一个块,显示列表中的下10个项目。我想要做的是当我到达列表末尾时隐藏这个块。
function loadMore() {
//Load the content
var urlPortion = searchQuery.split("?");
var urlString = "?hits=10&offset=";
var offset = 0;
var pageCounter = 1;
$(".box-footer").click(function () {
offset += 10;
pageCounter++;
var urlBuilder = urlPortion[0] + urlString + offset + "&" + urlPortion[1];
$.get(urlBuilder, function (data) {
var content = $(".search-result-list li", data);
$('.search-result-list').append(content);
});
});
//Visibility of "Show more"-bar
var textString = $(".search-result-totalhits").html();
var totalHitsString = /\d+/;
var totalHits = textString.match(totalHitsString);
var numberOfPages = (Math.ceil(totalHits/10));
if ((totalHits > 10) && (pageCounter < numberOfPages)) {
$(".p-sok .box-footer").show();
}
else {
$(".p-sok .box-footer").hide();
}
};
我的问题是,实际检查是否显示块的最后一个条件始终为真。我猜测变量“pageCounter”在上面的点击功能之外是不可用的,但我不确定。我试图在第18行将变量输出到控制台,但它不会输出任何内容。
有人在乎给我一些暗示吗?
答案 0 :(得分:0)
你是否正确遇到变量范围问题。 click事件的回调在与LoadMore函数不同的上下文中调用。 LoadMore就是您声明它而不是实际运行的位置。如果您希望能够在回调函数和LoadMore中访问变量,则需要将pageCounter声明为LoadMore函数之外的全局变量。如下所示:
var pageCounter = 1;
function loadMore() {
//Load the content
那说我实际上认为你想在“// Visibility of”之后移动所有内容。在点击处理程序中显示更多“-bar”。我之所以这么说是因为您想根据列表中的当前位置显示或隐藏标题。每次点击都会更新,对吧?如果是这样,请尝试以下方法:
var pageCounter = 1;
function loadMore() {
//Load the content
var urlPortion = searchQuery.split("?");
var urlString = "?hits=10&offset=";
var offset = 0;
$(".box-footer").click(function () {
offset += 10;
pageCounter++;
var urlBuilder = urlPortion[0] + urlString + offset + "&" + urlPortion[1];
$.get(urlBuilder, function (data) {
var content = $(".search-result-list li", data);
$('.search-result-list').append(content);
});
//Visibility of "Show more"-bar
var textString = $(".search-result-totalhits").html();
var totalHitsString = /\d+/;
var totalHits = textString.match(totalHitsString);
var numberOfPages = (Math.ceil(totalHits/10));
if ((totalHits > 10) && (pageCounter < numberOfPages)) {
$(".p-sok .box-footer").show();
}
else {
$(".p-sok .box-footer").hide();
}
});
};