【问题标题】:javascript function is not called in order in Internet explorer 9在 Internet Explorer 9 中未按顺序调用 javascript 函数
【发布时间】:2015-09-12 05:51:13
【问题描述】:

我在 jqgrid 中调用了两个函数:

var AdGrid = ConstructJQgrid(gridId, GridModel, true, gridComplete);

$(AdGrid).jqGrid("getGridParam", "colModel");

在 Chrome 中测试:

从上面的javascript代码中,第一个方法ContructJQgrid被调用,调用controller返回结果,结果存储在变量AdGrid中。

通过使用AdGrid 的值,我调用jqGrid 方法并返回网格。

这是实际的工作场景,在 Google chrome 浏览器上运行良好。

在 Internet Explorer(版本:9.0)中测试:

在这里,首先它调用ContructJQgrid,而不调用controller,它正在执行jqgrid方法,因此我的网格没有被构造,导致错误。

注意:我的 controller 正在呼叫,但不是在 IE9 中的要求时间。

如何在 Internet Explorer(Version:9.0) 中工作?

【问题讨论】:

  • 你的控制器代码在做什么?
  • DOM 加载完成后是否执行代码?
  • 您应该包含ConstructJQgrid的代码。你应该总是写你使用哪个版本的jqGrid。取而代之的是,您只包含了两行代码。第二行 $(AdGrid).jqGrid("getGridParam", "colModel") 返回 colModel 并且在没有赋值的情况下使用它是没有意义的。因此,您应该发布更多代码并更清楚地描述您的工作。可能您应该在loadComplete 回调中移动一些代码。

标签: javascript jquery jqgrid internet-explorer-9


【解决方案1】:

这是由于 JavaScript 的异步行为而发生的。即使第一个函数尚未完成执行,第二个函数也会被调用。我建议您在函数 var AdGrid = ConstructJQgrid(gridId, GridModel, true, gridComplete); 的定义末尾添加第二行 $(AdGrid).jqGrid("getGridParam", "colModel");

还有一种方法,使用回调函数的概念 `

var AdGrid = ConstructJQgrid(gridId, GridModel, true, gridComplete,
        function () {
            $(AdGrid).jqGrid("getGridParam", "colModel");
        });

`

【讨论】:

  • 谢谢。我会尝试上述解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 2013-02-11
  • 2013-05-11
相关资源
最近更新 更多