javascript – 我的功能不会运行?

我已经厌倦了萤火虫告诉我的vars没有定义……

我有一个按钮:接下来.单击按钮时,我希望它将php页面加载到div中,为php页面指定代表下一页的变量.

为此,我有一个变量crntpage,用于存储当前页面的值.为了计算下一页的var必须是什么,我有一个名为next的函数,它计算该值并返回它.

让我们假设我们在第5页:

JavaScript

$(document).ready(function() {

$.ajax({
    url: 'pagination.php',
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: true,
    cache: false,
    success: function (pages) {
                last = pages['last'];
                crntpage = 1;

                function nxt(b) {
                    if (b == last) {
                        next  = last;
                    } else {
                        next = b + 1;
                    }
                    return next;
                }

                $('#next').live('click', function() {
                    crntpage(next);
                    $('#content').load('getposts.php?pagenum=' + nxt(crntpage));
                    return false;
                });
    }
});
});

HTML

<div id="previous"> 
        <a href=''> <-Previous</a>
</div>

我一直收到一个错误,说下一个没有定义.我的猜测是因为我的nxt函数没有收到last的值.我究竟做错了什么?

最佳答案 您尝试使用nxt函数可以使用Math.min()更加惯用地完成:

$('#next').live('click', function() {
    crntpage = Math.min(crntpage + 1, last);
    $('#content').load('getposts.php?pagenum=' + crntpage);
    return false;
});

您还应该使用var关键字为变量声明添加前缀,以免污染全局命名空间.

这是修改后的代码:

$(function() {

    var currentPage = 1;
    var last = 1;

    $('#next').live('click', function() {
        currentPage = Math.min(currentPage + 1, last);
        $('#content').load('getposts.php?pagenum=' + currentPage);
        return false;
    });

    $.ajax({
        url: 'pagination.php',
        type: 'POST',
        contentType: "application/json; charset=utf-8",
        dataType: "json",    
        cache: false,
        success: function (pages) {
            last = pages['last'];
        }
    });

});
点赞