在 javascript 循环中声明变量 每次点击都会为声明的变量分配相同的值
declaring variable in a javascript loop every click will assign same value to the declared variable
在 javascript 循环中声明变量,每次点击都会为声明的变量分配相同的值,我想在每次点击按钮时递增 track_load
。
function loadmore() {
var track_load = 1; //total loaded record group(s)
var loading = false; //to prevents multipal ajax loads
var total_groups = 5; //total record group(s)
if (track_load <= total_groups && loading == false) //there's more data to load
{
loading = true; //prevent further ajax loading
$('.animation_image').show(); //show loading image
//load data from the server using a HTTP POST request
$.post('autoload_process.php', {
'group_no': track_load
}, function(data) {
$("#results2").append(data); //append received data into the element
//hide loading image
$('.animation_image').hide(); //hide loading image once data is received
track_load++; //loaded group increment
loading = false;
}).fail(function(xhr, ajaxOptions, thrownError) { //any errors?
alert(thrownError); //alert with HTTP error
$('.animation_image').hide(); //hide loading image
loading = false;
});
}
}
HTML:
<input type="button" onClick="loadmore()" value="LOAD MORE" class="menu-button">
Declaring variable in a javascript loop...
您没有在循环中声明它。
I want to increment track_load
with every button click.
然后将它从 loadmore
函数 移出 ,进入包含 loadmore
函数的范围:
var track_load = 1;
function loadmore() {
// ....
}
不幸的是,在您的情况下,这将使它成为另一个全局变量。不要使用全局函数(全局命名空间真的很拥挤),而是将您的代码包装在一个作用域函数中,并使用现代技术而不是onxyz
属性来连接您的处理程序:
// This goes in a script tag at the bottom of your HTML, just before
// the closing </body> tag
// Scoping function
(function() {
$(".load-more").on("click", loadmore);
var track_load = 1;
function loadmore() {
$("<p>").text("track_load = " + track_load).appendTo(document.body);
++track_load;
}
})();
<input type="button" value="LOAD MORE" class="menu-button load-more">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
在 javascript 循环中声明变量,每次点击都会为声明的变量分配相同的值,我想在每次点击按钮时递增 track_load
。
function loadmore() {
var track_load = 1; //total loaded record group(s)
var loading = false; //to prevents multipal ajax loads
var total_groups = 5; //total record group(s)
if (track_load <= total_groups && loading == false) //there's more data to load
{
loading = true; //prevent further ajax loading
$('.animation_image').show(); //show loading image
//load data from the server using a HTTP POST request
$.post('autoload_process.php', {
'group_no': track_load
}, function(data) {
$("#results2").append(data); //append received data into the element
//hide loading image
$('.animation_image').hide(); //hide loading image once data is received
track_load++; //loaded group increment
loading = false;
}).fail(function(xhr, ajaxOptions, thrownError) { //any errors?
alert(thrownError); //alert with HTTP error
$('.animation_image').hide(); //hide loading image
loading = false;
});
}
}
HTML:
<input type="button" onClick="loadmore()" value="LOAD MORE" class="menu-button">
Declaring variable in a javascript loop...
您没有在循环中声明它。
I want to increment
track_load
with every button click.
然后将它从 loadmore
函数 移出 ,进入包含 loadmore
函数的范围:
var track_load = 1;
function loadmore() {
// ....
}
不幸的是,在您的情况下,这将使它成为另一个全局变量。不要使用全局函数(全局命名空间真的很拥挤),而是将您的代码包装在一个作用域函数中,并使用现代技术而不是onxyz
属性来连接您的处理程序:
// This goes in a script tag at the bottom of your HTML, just before
// the closing </body> tag
// Scoping function
(function() {
$(".load-more").on("click", loadmore);
var track_load = 1;
function loadmore() {
$("<p>").text("track_load = " + track_load).appendTo(document.body);
++track_load;
}
})();
<input type="button" value="LOAD MORE" class="menu-button load-more">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>