这是因为变量的作用域不存在。您需要在每个循环外将变量设置为全局变量。像这样的东西:
我在每个函数中都有一个jQuery,并在其中设置一个名为"last_header"的变量,但前提是名为"header"的变量的条件不为null。我遇到的问题是,通过each函数的每个循环,"last_header"变量值都没有保留,并且被设置为未定义。我想保留上次设置该变量时的值。
$('#hidden_specs_' + i + ' tr').each(function() {
var header = $(this).find('th').html();
if (header !== null) {
var last_header = $.trim(header); //THIS IS THE VARIABLE I WANT TO RETAIN ON THE NEXT LOOP THROUGH
}
alert(last_header); //THIS RETURNS UNDEFINED UNLESS IT HAS BEEN SET IN THIS LOOP
});
我希望这有道理?
任何帮助都将不胜感激。
非常感谢,标记
var last_header = "";
$('#hidden_specs_' + i + ' tr').each(function() {
var header = $(this).find('th').html();
if (header !== null) {
last_header = $.trim(header); //THIS IS THE VARIABLE I WANT TO RETAIN ON THE NEXT LOOP THROUGH
}
alert(last_header);
});
工作演示
您可以使用HTML5自定义属性来实现该功能。我已经更新了你的代码如下:
$('#hidden_specs_' + i + ' tr').each(function() {
var header = $(this).find('th').html();
if (header !== null) {
var last_header = $.trim(header);
$("body").data("last_header",$.trim(header)); // but if your condition satisfies then the value will be overridden.
}
alert($("body").data("last_header")); //THIS IS THE LINE WHICH WILL GIVE YOUR LAST SET VALUE
});
希望这有帮助:)
您需要在循环之外声明变量
//declare the variable outside the loop
var last_header;
$('#hidden_specs_' + i + ' tr').each(function () {
var header = $(this).find('th').html();
if (header !== null) {
last_header = $.trim(header); //THIS IS THE VARIABLE I WANT TO RETAIN ON THE NEXT LOOP THROUGH
}
alert(last_header); //THIS RETURNS UNDEFINED UNLESS IT HAS BEEN SET IN THIS LOOP
});
alert(last_header);
在您的情况下,变量的作用域仅限于each
回调函数,因此该变量在循环之外不可用。