无法获取未定义或空引用的 属性 'style' 但在另一台服务器上工作

Unable to get property 'style' of undefined or null reference but works in another server

我有一个经典的asp项目。在我的一个页面中,我必须调用 javascript 函数。该调用没有任何问题,并且在我的测试服务器(不是本地主机,只是用于测试他的项目的服务器)上运行良好。但是当我将它部署到实际服务器时,该功能不起作用。我在onload事件中调用这个函数。

那个函数有这种类型的行(我不能写完整的代码,因为我工作的公司不允许)

document.getElementById("R6C2_1").style.display = 'block'
document.getElementById("R6C2_2").style.display = 'none'

.....

当我尝试在 IE10 上调试它时,出现 "Unable to get property 'style' of undefined or null reference" 错误。之后, javascript 函数中的元素不会被加载。页面上看不到它们。

我的主要问题是,正如我之前提到的服务器之间的差异。我不明白为什么它在一台服务器上运行,但在另一台服务器上运行。

虽然无法仅根据此信息确定问题,但您应该查看:

  1. 调用代码时你要查找的元素是否实际存在(使用浏览器调试/断点查看代码调用时的页面)。
  2. 如果它们存在,请检查它们是否具有您期望的 ID(例如 R6C2_1)- 如果没有,为什么?谁创建这些 ID?可能是服务器配置问题。
  3. 使用每个服务器的应用程序进行调试,并查看页面/DOM,查看是否存在差异或检查代码是否在不同时间调用。

这些可以帮助您查明问题所在。祝你好运!

如果元素只是需要时间来创建,您可以等到它们出现:

function ExecuteWhenExists() {
    var R6C2_1 = document.getElementById("R6C2_1");
    var R6C2_2 = document.getElementById("R6C2_2");
    if (R6C2_1 && R6C2_2) {
        R6C2_1.style.display = 'block';
        R6C2_2.style.display = 'none';
    } else {
        window.setTimeout(ExecuteWhenExists, 100);
    }
}
ExecuteWhenExists();

当元素不存在时,这不会崩溃,只会继续尝试以非阻塞方式执行(每 0.1 秒轮询一次),直到它们存在。