删除警报时,变量变为未定义

When removing alert, the variable becomes undefined

我有三个单独的选项卡面板,每个面板都是我数据库中的一个 table。我想做的是点击一个按钮,同时将所有三个选项卡的内容保存在数据库中。我设法通过激活选项卡,然后将特定值传递给它来做到这一点。但是,当我从我的代码中删除这两个警报函数时,我发现 B.RECORD 是 undefined。有什么帮助吗?

      tabPanel.setActiveTab(1);
      tabPanel.setActiveTab(2);
      tabPanel.setActiveTab(0);

var B= window.frames["frm_B"];
var C= window.frames["frm_C"];

alert(B);
alert(C);
try {
    B.RECORD.getField("AID").setRealValue(aid);
    C.RECORD.getField("AID").setRealValue(aid);
    B.RECORD.update();
    C.RECORD.update();
    parent.refreshGrid();
    parent.win.close();

这看起来 alert() 让您有时间加载 iframes。您需要使用:

  1. setTimeout 为帧提供任意加载时间。
  2. 使用帧的.load()事件。

我希望您使用 .load() 事件,因为它是可靠的。因此,为此,将以下代码及其他代码放入 iframe 的 load 事件中:

try {
    B.RECORD.getField("AID").setRealValue(aid);
    C.RECORD.getField("AID").setRealValue(aid);
    B.RECORD.update();
    C.RECORD.update();
    parent.refreshGrid();
    parent.win.close();

load 事件可以使用:Javascript callback when IFRAME is finished loading?