我已经厌倦了萤火虫告诉我的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的值。我做错了什么?
答案 0 :(得分:2)
使用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'];
}
});
});
答案 1 :(得分:0)
看起来你没有定义next
。 (或者可能是你的代码中没有在这里发布的部分定义的,我不知道)你试过这个:
$(document).ready(function() {
var next = ''; //defining the variable first, then you set it below in nxt()
$.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;
});
}
});
});