在jQuery.ech()函数中保留变量值



我在每个函数中都有一个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回调函数,因此该变量在循环之外不可用。

最新更新