jquery函数没有清除函数内部变量的先前值

时间:2011-07-14 01:01:13

标签: javascript jquery

我正在使用一个函数来显示一个对话框,询问用户是否打印好支票,如果是,我们更新数据库中的标志以进行检查。我将此函数传递给“checked_id”,这是一个包含要更新的检查ID的值。

此代码在第一次运行时工作正常,但是当我单击另一个检查以打印时,“checked_id”与先前执行的id相同。此外,id永远不会被更改,除非我刷新浏览器,我不想每次都这样做。

我已经通过firebug验证了在调用函数时“checked_id”实际上正在被更改,但是jquery(即猜测)中的内容或者此函数没有清除变量中的主要值。

我该如何解决这个问题?提前感谢您的帮助。

这是我的js函数

function confirm_print_checks_yes_no(xtitle,msg, btn_yes_txt, btn_no_txt, checked_id, xwidth, xheight)
{
    var button_yes = btn_yes_txt;
    var button_no = btn_no_txt;
    var dialog_buttons = {};

    xwidth = (xwidth) ? xwidth : 300;
    xheight = (xheight) ? xheight : 150;

    dialog_buttons[button_yes] = function (){   update_existing(checked_id,"xml/xml_update_db.php", "print_checks_div", "SQL_UPDATE_multiple_checks", "update_existing", "", "sql_acctg_checks.php"); $(this).dialog("close");
                                                $(this).dialog("close");

    };
    dialog_buttons[button_no] = function(){$(this).dialog("close");};

    $("#modal_confirm_yes_no").html(msg);
    $("#modal_confirm_yes_no").dialog({
                title: xtitle,
                bgiframe: true,
                autoOpen: false,
                height: xheight,
                width: xwidth,
                modal: true,
                buttons: dialog_buttons
            });

    $("#modal_confirm_yes_no").dialog("open");
}

用法:

onclick="
var checked_ids = getAllCheckedIDs('my_div', 'check_print_chbx');
if(checked_ids)
{
    window.open('print_checks_pdf.php?print_ids=' + checked_ids );
    confirm_print_checks_yes_no(''.mysql_real_escape_string(L_PRINT_CHECKS).', ''.mysql_real_escape_string(L_PRINT_CHECKS_OK_MSG).'', ''.mysql_real_escape_string(L_PRINT_CHECKS_OK_YES_MSG).'', ''.L_NO.'', checked_ids, 500, 200 );
}
else
{
    alert('No Checks Selected')
};"

2 个答案:

答案 0 :(得分:0)

如果您使用checked_id变量(带有sam名称),也可能会导致问题。

你可以,例如使您的函数返回“checked_id”的新值,并将其分配给函数的变量外部。

答案 1 :(得分:0)

对于任何人来说,我都知道“$(this).dialog('destroy');”而不是“$(this).dialog('close');工作。